sub (*;$@) { local($", $!) = (', ', 0); if (@_ == 1) { return CORE::open($_[0]) || croak "Can't open(@_): $!"; } elsif (@_ == 2) { return CORE::open($_[0], $_[1]) || croak "Can't open(@_): $!"; } elsif (@_ == 3) { return CORE::open($_[0], $_[1], @_[2..$#_]) || croak "Can't open(@_): $!"; } die "open(@_): Do not expect to get ", scalar @_, " arguments"; }