While experimenting I've found the first two methods of passing a hash
to a subroutine work:

# method 1
my %hash1;
foo1(%hash1);
say %hash1.perl;
sub foo1(%hash) {
  %hash{1} = 0;
}

# method 2
my %hash2;
my $href2 = %hash2;
foo2($href2);
say %hash2.perl;
sub foo2($href) {
  $href{1} = 0;
}

# this is what I naively tried first
# method 3 [DOESN'T WORK]
my %hash3;
my $href3 = \%hash3;
foo3($href3);
say %hash3.perl;
sub foo3($href) {
  %($href}){1} = 0;
}


The perl dump shows the same results for the first two methods:

{"1" => 0}<>

So which is the preferred method (or more correct)?

Thanks.

Best regards,

-Tom

Reply via email to