Perl can be somewhat odd when it comes to casting arrays, especially when dealing with the SOAP::Lite module and their internal types. Try casting the second array and see if that makes a difference.
Also, I notice you used parenthesis instead of curly braces when defining the member_priority variable. Not sure if that will work or not.
Try something like this:
my $member = { address => "10.100.125.18", port => "443" };
my $member_priority = { member => $member, priority => "2" };
push @memberPriorityList, $member_priority;
push @memberPriorityLists, [@memberPriorityList];
$soapResponse = $Pool->set_priority(
SOAP::Data->name(pool_names => ["testpool443"]),
SOAP::Data->name(priorities => [@MemberPriorityLists])
);
Note: I haven't tested this but I'm pretty sure that's the issue.
You can always turn on SOAP::Lite debugging with:
use SOAP::Lite + trace => qw(method debug);
It will print out the request and response SOAP/XML messages that can help determine whether something is being cast correctly.
Hope this helps!
-Joe