Thread Gehirnverknotung dank Hashes (12 answers)
Opened by Basti at 2012-09-07 16:13

Gast Basti
 2012-09-17 11:39
#161856 #161856
Hallo!

Ich habe noch irgendwo einen Fehler.

Noch mal kurz, was ich tue.
Ich lese alle Kunden aus einer Datenbanktabelle ein.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub einlesen {
$count = 0;
$db->Sql("select * from customers");
while ($db->FetchRow()) {
$customer{'customerId'} = $db->Data("kundennummer");
$customer{'street'} = $db->Data("strasse");
$customer{'streetNumber'} = $db->Data("hausnummer");
$customer{'city'} = $db->Data("ort
$allCustomers{$count} = \%ddvCustomer;
$count++;
}
return %allCustomers;
}



Ich denke, dass alle Kunden in den Hash %allCustomers eingelesen, da mir use Data::Dumper; Dumper(%allCustomers); sowas ausgibt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$VAR1 = '127';
$VAR2 = {
'customerId' => 1234,
'street' => 'Hauptstr.',
'streetNumber' => '33',
'city' => 'Musterort'
};
$VAR3 = '1049';
$VAR4 = $VAR2;
$VAR5 = '71';
$VAR6 = $VAR2;
$VAR7 = '1648';
$VAR8 = $VAR2;
...


Gehe ich jetzt aber mit der Dereferenzierung
Code (perl): (dl )
1
2
3
4
foreach my $key (%allCustomers) {
        my %customer = %{ $allCustomers{$key} };
        print $customer{'customerId'} . " ";
}

durch den Hash, bekomme ich 1234 Can't use an undefined value as a HASH reference at [die Zeile, wo das print steht]

Die Kundennummer ist die Nummer des letzten Kunden in der Liste, die aus der Datenbankabfrage resultiert.

Jetzt weiß ich nicht, wo mein Fehler liegt.
Last edited: 2012-09-17 11:47:55 +0200 (CEST)

View full thread Gehirnverknotung dank Hashes