in reply to How to return an appropriate error from module?

The interface you asked about is provided by:
sub validate_phone_num { return eval { /^$/ or die "No number\n"; ... $cleaned_up_num }; }

Replies are listed 'Best First'.
Re^2: How to return an appropriate error from module?
by zrajm (Beadle) on Mar 06, 2009 at 14:22 UTC
    I like this idea.

    Is there any rule/praxis for or against setting $@ inside my modules or subroutines -- as a way of returning error messages?

    If using above example as a guide, would the following module be considered to be "kosher" perl?

    package Phone; sub prettify { local ($_) = @_; return eval { /^$/ and die "No number\n"; # do something to modify $_ here $_; }; }

    In my main program this could then be called using:

    my $pretty_number = Phone::prettify($number) if (not defined($pretty_number)) { # e.g. insert message $@ into web page output }
      It is a bit odd. Why not let the exception propagate?
      package Phone; sub prettify { local ($_) = @_; /^$/ and die "No number\n"; # do something to modify $_ here $_; }
      my ($pretty_number) = eval { Phone::prettify($number) } or do { ...insert message $@ into web page output... ...exit/return/next/etc... };