Na, da wo du es versucht hast einzubauen ist es ja auch falsch!
Du musst durch die Daten iterieren ( kommt ja ein paar mal in dem skript vor ) und dann den vollen Namen in Vorname und Nachname aufteilen.
Sieh dir z.B. diese Stelle einmal an:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#my ($vorname, $nachname) = split /\s/, $t->{payment_method}->{public_data}->{holder_name};
foreach my $t (@$transaction_list) {
$batch_content .= "<Debit> \n" .
"<businessCaseSignature>Meine WireCard Signatur</businessCaseSignature> \n" .
"<merchantTransId>". $t->{document_info}->{number}. "</merchantTransId> \n" .
"<ExternalAccount> \n" .
"<firstName>". $t->{payment_method}->{public_data}->{vorname}. "</firstName> \n" .
"<lastName>". $t->{payment_method}->{public_data}->{nachname}. "</lastName> \n" .
"<accountNumber>". $t->{payment_method}->{secure_data}->{account_number}. "</accountNumber> \n" .
"<BankCode>". $t->{payment_method}->{secure_data}->{bank_code}. "</BankCode> \n" .
"<Country>". $t->{account_info}->{address_country} . "</Country> \n" .
"</ExternalAccount> \n" .
"<Amount>". $t->{transaction_amount}*100 . "</Amount> \n" .
"<currency>EUR</currency> \n" .
"<Usage>". string('dummy_pp_description',
doc_name => $t->{document_info}->{name},
doc_num => $t->{document_info}->{number},
) . "</Usage> \n" .
"</Debit> \n";
$result_amount += $t->{transaction_amount};
}
Hier wolltest du $t an einer Stelle verändern an der es gar keinen Sinn macht, und $t nicht existiert, deshalb die Fehlermeldung.
Das split() muss mit in die Schleife.
Du könntest also, nachdem die $transaction_list bekannt ist, einmal durchiterieren und die Namen splitten.
MfG