sub Open { my( $file, $opts )= @_; foreach $key ( %$opts ) { # ... } } Open( "file", { ReadOnly=>1, Retries=>2 } ); #### sub Open { my $opts= UNIVERSAL::isa( $_[-1], "HASH" ) ? pop(@_) : {}; my( $file, $mode, $mask )= @_; # ... } Open( "file" ); Open( "file", { Exclusive=> 1 } ); Open( "file", "w", 0666, { Locked=>1 } ); #### Create( Name=>"This", Users=>'fred','bob','joe' ); #### Create( Name=>"This", Users=>['fred','bob','joe'] );