I recommend that you postpone attempting to write to Excel until you have learned how to dereference your data structure. The following changes to your code should help. After you have figured out how to select the required data and print it to the screen, you can ask for help in writing that data to Excel.
use strict;
use warnings;
#my $samlattr = $responsetextall[$i][$j]{attributeStatements};
my $samlattr = [
{ 'namespace' =>
'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified',
'name' => 'First Name',
'values' => 'user.firstName',
'type' => 'EXPRESSION'
},
{ 'namespace' =>
'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified',
'name' => 'Last Name',
'values' => 'user.lastName',
'type' => 'EXPRESSION'
}
];
foreach my $result ( @{$samlattr} ) {
#print "$result->{type}\n";
print "\n\n";
#foreach my $var ( @{ $samlattr{$result} } ) {
foreach my $var ( sort keys %$result ) {
#print "$var->{type}\n";
print "$var => $result->{$var}\n";
#$worksheet->write(
# $r, 14,
# ( $var->{values}) );
}
}
OUTPUT:
name => First Name
namespace => urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
type => EXPRESSION
values => user.firstName
name => Last Name
namespace => urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
type => EXPRESSION
values => user.lastName