Passing a hash to a subroutine: best method?

2015-07-03 Thread Tom Browder
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; } #

Re: Passing a hash to a subroutine: best method?

2015-07-03 Thread Elizabeth Mattijsen
On 03 Jul 2015, at 17:26, Tom Browder tom.brow...@gmail.com wrote: 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

Re: Passing a hash to a subroutine: best method?

2015-07-03 Thread Tom Browder
On Jul 3, 2015 11:14 AM, Brandon Allbery allber...@gmail.com wrote: On Fri, Jul 3, 2015 at 11:26 AM, Tom Browder tom.brow...@gmail.com wrote: # method 1 ... foo1(%hash1); This is what I would naïvely expect to work in any language except Perl 5. That comment, along with Liz's, has convinced

Re: Passing a hash to a subroutine: best method?

2015-07-03 Thread Tom Browder
On Fri, Jul 3, 2015 at 10:26 AM, Tom Browder tom.brow...@gmail.com wrote: 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; } Another question on method 1

Re: Passing a hash to a subroutine: best method?

2015-07-03 Thread Tom Browder
On Fri, Jul 3, 2015 at 2:03 PM, Timo Paulssen t...@wakelift.de wrote: On 07/03/2015 07:20 PM, Tom Browder wrote: On Fri, Jul 3, 2015 at 10:26 AM, Tom Browder tom.brow...@gmail.com wrote: ... What is the proper type to use for the %hash for a more complete signature in function foo1? I've

Re: Passing a hash to a subroutine: best method?

2015-07-03 Thread Timo Paulssen
On 07/03/2015 10:02 PM, yary wrote: On Fri, Jul 3, 2015 at 3:03 PM, Timo Paulssen t...@wakelift.de wrote: but this does not sub takes_int_array(Int @bar) { say @bar } takes_int_array([1, 2, 3]) because the type match is against the defined type. We do not automatically infer that [1, 2, 3]