http://www.perlmonks.org?node_id=1033390

sami.strat has asked for the wisdom of the Perl Monks concerning the following question:

This is one of my first perl apps and I'm having issues pushing a hash into an array.

The code sample is below, I've documented the place where the problem lies. Any help would be greatly appreciated. Thanks in advance.

#!/usr/bin/perl my $RESULT="OK"; use strict; use warnings; my $STATE_OK=0; my $STATE_WARNING=1; my $STATE_CRITICAL=2; my $STATE_UNKNOWN=3; my %error_code = ( SysBatteryFailure => 'System Battery Failure', PowerRedundencyFailure => 'Power Redundency Failure', FltTolPowerSupplyFailed => 'Fault Tolerant Power Suppl +y Failure', ); my $SysBatteryFailure=`echo \"Battery Failure\" | grep Failure`; my $PowerRedundencyFailure=`echo \"Power Redundency Failure\" | grep t +rash`; my $FltTolPowerSupplyFailed=`echo \"Power Supply Failure\" | grep tras +h`; my @STATUS = ($SysBatteryFailure, $PowerRedundencyFailure, $FltTolPowe +rSupplyFailed); my @ILO_ERRORS = (); foreach my $element (@STATUS) { chomp $element; if ($element) { # The element variable is accurate here print "$element\n"; # the following line fails. I want to push the hash # into the array. Any idea why it fails? push (@ILO_ERRORS, $element); } } if (@ILO_ERRORS) { print "SNMP CRITICAL - ", @ILO_ERRORS; exit $STATE_CRITICAL; } else { print "SNMP OK - $STATE_OK"; exit $STATE_OK; }

The result of this code is:

root@yosemite SNMP# ./2

Battery Failure

Use of uninitialized value $ILO_ERRORS1 in print at ./2 line 37.

SNMP CRITICAL - HASH(0x11f1018)

root@yosemite SNMP# vi 2