in reply to What Are The Rules For Subs And Modules When Fed Wrong Input

Cody,

One of the things I use to get around things like this is to use anonymous hashes to call subroutines. For example:
my ($value,$error) = my_sub(input => 'who', inny => 'what'); unless ($value) { my_abort ("There was an error: ",$error); }
and then, in my_sub
sub my_sub { my %args = { input => undef, inny => undef, @_ }; return(undef,"Missing inny") unless $args->{'inny'}; # do some stuff if ($problem) { return(undef,$error_msg); } return($value,undef); }
As you can see, with this you can test for each input requirement by name, dieing on the "gotta-have-its" and just warning on the "ok-I-dont-need-its".
The my_abort could even be changed to check for error severity and do a warn or die based on that.

Anyhow, just my 2 cents on handling sub calls that may return errors.

What does this little button do . .<Click>; "USER HAS SIGNED OFF FOR THE DAY"

Replies are listed 'Best First'.
Re: Re: What Are The Rules For Subs And Modules When Fed Wrong Input
by bcisys (Initiate) on Jul 25, 2002 at 16:57 UTC
    There's a small typo in the code example:
    sub my_sub { # my %args = { # Was... my $args = { # Should be... input => undef, inny => undef, @_ };