# pass it two arrays, by reference. sub arrays_equal { my( $ar1, $ar2 ) = @_; @$ar1 eq @$ar2 or return 0; # different lengths. # now do member-wise comparison: for my $i ( 0 .. $#{$ar1} ) { $ar1->[$i] eq $ar2->[$i] or return 0; # short circuit } return 1; # all members compared equal. } # call it like so: if ( ! arrays_equal( \@savedpids, \@livepids ) ) #### sub arrays_equal(\@\@) { # everything else is the same } # then you can call it like so: if ( ! arrays_equal( @savedpids, @livepids ) )