--- "A. Pagaltzis" <[EMAIL PROTECTED]> wrote:

> I don’t know if this is just a silly example, but I’m not sure it
> makes sense… why `die if extra_keys` when you’ve already made
> sure that the set of keys can only be exactly @some_keys?

Oops.  That was silly of me.  Just another example of why I shouldn't
be retyping this :)

My first line should have been something like:

  croak $error 
    unless @required == grep {exists $args->{$_}} @required;

> The code I use for such occasions is
> 
>     sub foo {
>         my ( $args ) = @_;
>         my %default = ( foo => 1, bar => 1, baz => 'quux' );
>         my @optional_keys = qw( wibble wobble );
>         my %args = ( %default, map {
>             exists $args->{ $_ } ? ( $_ => delete $args->{ $_ } ) :
> ()
>         } keys %default, @optional_keys;
>         croak "I have no idea what you mean by @{[ keys %$args ]}" if
> %$args;
>         # ...
>     }

Yes, but you're altering the hash passed in by reference.

Cheers,
Ovid

-- 
If this message is a response to a question on a mailing list, please send
follow up questions to the list.

Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/

Reply via email to