It looks to me like you're setting up your $soap object and then not using it to actually make your first call. Instead, you're building a new LWP user agent without any credentials associated with it, and using that.
Try replacing everything from the line starting 'my $ie=' with the following:
use Data::Dumper;
$soap->transport->credentials( @credentials ); # you probably don't n
+eed this
my $call= $soap->GetListCollection();
die $call->faultstring() . "\n" . Dumper( $call->faultdetail() ) . "\n
+" . $call->faultactor() . "\n" if defined $call->fault();