in reply to why won't is print every value???

Well, you seem to be storing only one line in your array. Every loop, you actually clear your array and set it to the values of a new line like so:
while (<INFILE>) { { . . . @array = (); @array = split (/\s+/, $line); . . . }
I guess you might look at changing this into this:
my @array; while (<INFILE>) { { . . . push @array, split(/\s+/, $line); . . . }
However, I guess you'll also have to alter the following if (...) {} block as so:
if ($line =~ /^Happy\s+30/) { print $line . "\n"; }
If I understand your code right ;-).

note: I didn't have a chance to actually test the code ;/. Pardon me if it breaks anywhere ;)

_____________________
$"=q;grep;;$,=q"grep";for(`find . -name ".saves*~"`){s;$/;;;/(.*-(\d+) +-.*)$/; $_=["ps -e -o pid | "," $2 | "," -v "," "];`@$_`?{print"+ $1"}:{print" +- $1"}&&`rm $1`; print$\;}