pass hash to sub expecting named params?

2005-04-25 Thread Carl Franks
Will it be valid to pass a hash to a subroutine expecting named
params, if the hash keys match the names?

sub do_this (+$foo, +$bar) {
  # whatever
}

%arg = (
  :foo,
  :bar,
);

do_this(*%arg);

I use this technique a lot, and it would be unfortunate to miss out on
the advantages of subroutine signatures and have to 'go back' to the
perl5-ish
sub do_this (*%args) { }

Carl Franks


Re: pass hash to sub expecting named params?

2005-04-25 Thread Luke Palmer
Carl Franks writes:
 Will it be valid to pass a hash to a subroutine expecting named
 params, if the hash keys match the names?
 
 sub do_this (+$foo, +$bar) {
   # whatever
 }
 
 %arg = (
   :foo,
   :bar,
 );
 
 do_this(*%arg);

Yep, and that's exactly how you do it, too.  I believe that the * is
unnecessary (but still acceptable) if you're already in the named zone:

do_this(foo = 1, %arg);  # ok

Luke


Re: pass hash to sub expecting named params?

2005-04-25 Thread Carl Franks
That puts my mind at ease!
Many thanks,

Carl


On 4/25/05, Luke Palmer [EMAIL PROTECTED] wrote:
 Carl Franks writes:
  Will it be valid to pass a hash to a subroutine expecting named
  params, if the hash keys match the names?
 
  sub do_this (+$foo, +$bar) {
# whatever
  }
 
  %arg = (
:foo,
:bar,
  );
 
  do_this(*%arg);
 
 Yep, and that's exactly how you do it, too.  I believe that the * is
 unnecessary (but still acceptable) if you're already in the named zone:
 
 do_this(foo = 1, %arg);  # ok
 
 Luke