Exegesis 4 says

  When the subroutine dispatch mechanism detects one or more pairs as
  arguments to a subroutine with named parameters, it examines the keys of
  the pairs and binds their values to the correspondingly named parameters
  -- no matter what order the paired arguments originally appeared in. Any
  remaining non-pair arguments are then bound to the remaining parameters in
  left-to-right order.

  So we could call &load_data in any of the following ways: 
        
    load_data(filename=>'weblog', version=>1);  # named

    load_data(version=>1, filename=>'weblog');  # named (order doesn't matter)

    load_data('weblog', 1);                     # positional (order matters) 

where it has previously defined load_data thus:

    sub load_data ($filename ; $version, *@dirpath) {


As arrays turn into references in scalar context, and array references
automatically dereference in list context, I was wondering what happens
If I pathologically define

    sub silly ($foo, @foo) {
    }

and then call it

    silly (foo=>@somearray, @otherarray);

Presumably, it's a fatal error as it's ambiguous what the crazy programmer
wanted, but fatal errors don't feel very perl.

Nicholas Clark
-- 
Even better than the real thing:        http://nms-cgi.sourceforge.net/

Reply via email to