Thread hashref an sub und mehr
(4 answers)
Opened by chmod777 at 2010-11-19 20:23
Wenn ich Deine Frage richtig verstanden habe, geht das nicht. Du kannst nicht so etwas machen:
Code (perl): (dl
)
1 2 3 4 5 6 my $hashref = {}; test( eins => 1, zwei => 2, $hashref ); sub test { my (%hash,$hashref) = @_; } Die Hashreferenz landet stringifiziert als Schlüssel im Hash. Was Du machen kannst, ist die Hashreferenz als erstes übergeben und dann so etwas machen: Code (perl): (dl
)
1 2 3 4 5 6 my $hashref = {}; test( $hashref, eins => 1, zwei => 2 ); sub test { my ($hashref,%hash) = @_; } Wenn Du mit Prototypen arbeiten kannst/willst geht auch das hier: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub test(\%$) { my ($param,$hashref) = @_; warn Dumper $param; } my %hash = (eins => 1, zwei => 2); test( %hash, { hallo => 1 } ); Wenn Du es unbedingt so machen möchtest/musst: Code (perl): (dl
)
test( eins => 1, zwei => 2, $hashref ); Dann kannst Du es auch so machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 test( eins => 1, zwei => 2, $hashref ); sub test { my $hashref; if ( ref $_[-1] eq 'HASH' ) { $hashref = pop @_; } my %hash = @_; } Edit: Ich würde Dir aber dazu raten, nur Hashreferenzen zu übergeben... Das macht Dir in Zukunft das Leben einfacher. Last edited: 2010-11-19 20:54:19 +0100 (CET) OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/) -- Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html Perl-Entwicklung: http://perl-services.de/ |