unless ($^O =~ /aix/) { die ... }
# might be better as
die ... unless $^O =~ /aix/;
####
my $sequence_number = shift || die ...;
# technically, you want 'or' instead of '||' here
open (ERROR, "/usr/bin/errpt -g -l $sequence_number |");
# you don't check to see if it opened properly...
# nor do you ensure the safety of the variable
# if I enter '; rm -rf' here, you're in trouble
my ($sequence_number) = shift =~ /(\d+)/
or die ...;
open ERROR, "/usr/bin/errpt -g -l $sequence_number |"
or die "can't run errpt -g -l $sequence_number: $!";
####
while () {
$message{host} = (split)[1], next if /^el_nodeid/;
$message{drive} = (split)[1], next if /^el_resource/;
$message{detail} = (split)[1], next if /^el_detail_data/;
}
####
printf SENDMAIL "%-16s: %-20s\n" => @$_ for
["Sequence Number" => $sequence_number],
[ Host => $message{host} ],
[ Drive => $message{drive} ],
[ Model => $message{model} ],
[ Microcode => $message{mml} ],
[ "Message Type" => $message{type} ],
[ "Message Code" => $message{code} ],
[ Severity => $message{severity} ],
$message{type} eq "SIM" ? (
[ "First FSC" => $message{first_fsc} ],
[ "Last FSC" => $message{last_fsc} ],
) : (
[ VOLSER => $message{volser} ],
);