in reply to Array for system() call

change system(@Call) to system("@Call"); and it will work.

[jconner@kwan ~]$ perl -e ' @Call[0] = "gawk"; @Call[1] = "-f"; @Call[2] = "test.gawk"; @Call[3] = "test.file"; @Call[4] = ">"; @Call[5] = "out.file"; print "system(@Call)\n";'

prints: system(gawk -f test.gawk test.file > out.file)
which wouldn't even work if you literally placed it that way in a script. However, If you ran this: system("gawk -f test.gawk test.file > out.file") in a script that would work. So, therefore, enclose your array in the system() call in quotes. It works. :)

[jconner@kwan ~]$ ls -l out.file gls: out.file: No such file or directory [jconner@kwan ~]$ perl -e ' @Call[0] = "ls"; @Call[1] = "-al"; @Call[4] = ">"; @Call[5] = "out.file"; system("@Call");' [jconner@kwan ~]$ ls -l out.file -rw-r----- 1 jconner other 4637 Oct 23 10:56 out.file [jconner@kwan ~]$

----------
- Jim