system ('@array > $outfile');
That line doesn't do what you think it does. Single quotes don't interpolate. You want to use double quotes and you want to check the return code of system():
system( "@array > $outfile" ) == 0 or die "Couldn't launch [@array > $outfile]: $!/$?";
In reply to Re^3: System call doesn't recognise '>'
by Corion
in thread System call doesn't recognise '>'
by Lauras
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |