Leser: 17
call_sub (eins => $eins, zwei => $zwei ) usw.
%para = @_;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# hashref vornedran packen call_sub( $hashref, eins => $eins, zwei => $zwei ); ... my ($hashref, %para) = @_; # hashref hinten anfügen, nicht so schön: call_sub( eins => $eins, zwei => $zwei , $hashref ); ... my $hashref = pop @_; my %para = @_; # nur hashrefs übergeben: call_sub( { eins => $eins, zwei => $zwei }, $hashref ); ... my ($para, $hashref) = @_; # und dann mit %$para statt %para weiterarbeiten
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl -w use strict; use warnings; my %hash = (a=>'b',c=>'d'); call_sub (\%hash); sub call_sub { my ($local_hashref) = @_; print "erhalte: fuer a: " . $local_hashref->{a} . "\n"; print "erhalte: fuer c: " . $local_hashref->{c} . "\n"; }
1 2 3 4 5 6
my $hashref = {}; test( eins => 1, zwei => 2, $hashref ); sub test { my (%hash,$hashref) = @_; }
1 2 3 4 5 6
my $hashref = {}; test( $hashref, eins => 1, zwei => 2 ); sub test { my ($hashref,%hash) = @_; }
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 } );
test( eins => 1, zwei => 2, $hashref );
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 = @_; }
call_sub (eins => $eins, zwei => $zwei, hashref => $hashref )