On Fri, 15 Feb 2002, Paul Farley wrote:
> I have an application that I am using a perl script to do pattern matching
> and then execute commands specific to that application. I need a way to
> handle an error in my script if one of the `cmd blah`; doesn't work and send
> it to an error subroutine.
>
> Here's what I have now:
> <SNIPPED>
>
> sub subscription
> {
> ($passed_ep,$passed_pr$passed_sub,$passed_org,$passed_plat)=shift;
>
> #add error routine to handle if PR/PM doesn't exist -pass to
> exception_sub?
> `wsub \@ProfileManager:Staging \@Endpoint:$passed_ep`;
> `wln \@Endpoint:$passed_ep \@PolicyRegion:$passed_pr\.$passed_org`;
> `wsub \@ProfileManager:$passed_sub\.$passed_org\.$passed_plat\.ep
> \@Endpoint:$passed_ep`;
> # on error pass ($ep,$pr,$sub,$org,$plat)
> }
You should use the system command here. You are using `` in a void
context, and it's unnecessary to do so, unless you are doing something
with the output strings.
I would do something like:
sub mysub {
...
system("cmd", @args) == 0
or die "Error running com: $?\n";
...
}
sub handle_error {
my $error_msg = shift;
print "$error_msg\n";
print LOG "$error_msg\n";
...
}
And handle the errors this way:
eval {
mysub();
};
handle_error($@) if $@;
See the perldoc on eval -- it provides a fairly easy way to throw and
catch exceptions -- die throws the exception, eval catches it, and puts
the error message from die into $@.
-- Brett
http://www.chapelperilous.net/
------------------------------------------------------------------------
Alcohol, hashish, prussic acid, strychnine are weak dilutions. The surest
poison is time.
-- Emerson, "Society and Solitude"
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]