@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);