This may be going a bit too far, but you could use a dispatch table to do the work for you. It's reusable, and eliminates a whole slew of if/else/elsif statements...
use strict; use warnings; my %errors = ( 'input file not found' => sub { print "Bloody input file is missing!\n"; }, 'signing key not found' => sub { print "meh, we're screwed!\n"; }, 'no keys found' => sub { print "This doesn't need encrypting anyway...\n"; } ); my $program_output3 = '3001:input file not found'; chomp $program_output3; # chomp any newline $program_output3 =~ s/^\d+://; # remove the digits/colon $errors{lc $program_output3}->(); # lowercase, just in case
Output:
Bloody input file is missing!
In reply to Re: Perl 5.10.1 - compare external program output with a list of known error codes
by stevieb
in thread Perl 5.10.1 - compare external program output with a list of known error codes
by malokam
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |