Hallo Gernot!
Ergänzend zu Struppis Posting...
Hättest Du Dir die Warnungen ausgeben lassen, wäre das, was Dir Struppi eben geantwortet hat, vielleicht vorher klar gewesen. Nehmen wir also Dein Beispiel:
C:\>perl -w
# ^^ Gibt Warnungen aus.
use strict;
my %hashtab = ( 1 => "Sponge Bob",
2 => "Patrick Star");
my $par = "Meerjungfraumann";
print "HASHTAB: ", %hashtab;
print $/;
subr(%hashtab, $par);
sub subr {
my (%tab, $p) = @_;
print "HASH: ", %tab;
print $/, "PAR: $p";
}
Ausgabe:
---------------------------------------------------------
HASHTAB: 1Sponge Bob2Patrick Star
Odd number of elements in hash assignment at - line 15.
Use of uninitialized value in print at - line 16.
Use of uninitialized value in concatenation (.) or string at - line 17.
HASH: 1Sponge BobMeerjungfraumann2Patrick Star
PAR:
---------------------------------------------------------
»Odd number of elements in hash assignment at - line 14.«... aha!
Übergibst Du stattdessen eine Referenz:
C:\>perl -w
use strict;
my %hashtab = ( 1 => "Sponge Bob",
2 => "Patrick Star");
my $par = "Meerjungfraumann";
$, = $/;
print "HASHTAB: ", %hashtab;
print $/;
subr(\%hashtab, $par);
sub subr {
my $tab = shift;
my $p = shift;
my %tab = %$tab;
$, = $/;
print "HASH: ", %tab;
print $/, "PAR: $p";
}
Ausgabe:
---------------------------------------------------------
HASHTAB:
1
Sponge Bob
2
Patrick Star
HASH:
1
Sponge Bob
2
Patrick Star
PAR: Meerjungfraumann
---------------------------------------------------------
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?