Ich versuche gerade, Perl zu lernen, und mir ist aufgefallen, dass die Leute manchmal Variablen "escapen", wenn sie sie als Parameter übergeben. Ich bemerkte dies zuerst mit SQL::Abstract:
my %hash = (
'foo' => 'bar'
);
$db->insert('table', \%hash);
Als ich nun nach einem "print_r" (PHP) Äquivalent in Perl suchte und sah, wie Leute Data::Dumper empfahlen, konnte ich nicht verstehen, warum die Leute denken, dass sie gleichwertig sind, bis ich ein Beispiel sah, das print Dumper(\%hash);
anstelle von print Dumper(%hash);
.
Dies:
my %hash = (
key1 => 'value1',
key2 => 'value2'
);
print Dumper(%hash);
Dies wird ausgegeben:
$VAR1 = 'key2';
$VAR2 = 'value2';
$VAR3 = 'key1';
$VAR4 = 'value1';
Aber print Dumper(\%hash);
gibt dies aus:
$VAR1 = {
'key2' => 'value2',
'key1' => 'value1'
};
Kann mir jemand erklären, was das genau ist und was da passiert? Ich kann es in meinem Perl-Buch nicht finden und weiß nicht einmal, wonach ich bei Google suchen soll. Danke!