in reply to sending arguements to external program

@output = `program @array` works for me on my system. What you're describing is odd. qx// (back-ticks) should work as a double-quoted string, doing interpolation. Check your assumptions. Perhaps turn it into a string if nothing else:
$args = join(" ", @array); @output = `program $args`; # or use open: open(PROG, "program $args |") or die "program: $!"; @output = <PROG>; close(PROG);