in reply to Trouble using exit codes
Do you want to exit (=terminate) the entire program, or do you just want to return from the subroutine with an "exit code" and error message?
In the latter case, you could simply return two values from the subroutine(1). Heavily simplified:
#!/usr/bin/perl -w use strict; package search; sub find { # ... return (-1, "my error message"); } package main; my ($exitcode, $msg) = search::find("foo", "bar"); print "exit code: $exitcode, message: '$msg'\n";
Generally, putting anything after an unconditional return in the same branch of execution doesn't make sense, because the code would never be run...
sub find { ... if (...) { return "Passed\n"; $count++; # never executed ... }
___
(1) or if you wanted to get fancy, you could use a dualvar
package search; use Scalar::Util 'dualvar'; sub find { # ... return dualvar -1, "my error message"; } package main; my $ret = search::find("foo", "bar"); printf "exit code: %d, message: '%s'\n", $ret, $ret; # exit code: -1, message: 'my error message'
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Trouble using exit codes
by justkar4u (Novice) on Apr 06, 2011 at 20:04 UTC | |
by Eliya (Vicar) on Apr 06, 2011 at 20:19 UTC | |
by justkar4u (Novice) on Apr 06, 2011 at 21:07 UTC |