Thread Kann Hash nicht übergeben
(5 answers)
Opened by roooot at 2008-06-16 23:27
Der Code ist fehlerhaft in seiner Logik.
foo() liefert 2 Werte zurück, nämlich 2 Referenzen; die erste auf einen Array, die zweite auf einen Hash. innerhalb von bar() nimmst Du diese beiden Referenzen entgegen und packst *BEIDE* in einen Array @sql_output; der Hash %sql_info bekommt nix ab. Wo bitte dereferenzierst Du die Referenzen? "croak @sql_output" gibt das richtige aus, denn $sql_output[0] = ARRAY-ref $sql_output[1] = HASH-ref ... Wenn man es richtig macht, geht nix verloren: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; sub foo { my @array = ( 1, 2 ); my %hash = ( a => 'A', b => 'B' ); return \@array, \%hash; } sub bar { # Skalare weil 2 Referenzen geliefert werden; KEIN ARRAY+HASH my ( $aref, $href ) = foo(); print "Ref: $aref - $href\n"; for ( @$aref ) { print "Array: $_\n"; } for ( keys %$href ) { print "Hash: $_ => $href->{$_}\n"; } } bar(); update: Grammatikfehler ausgebessert. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |