#!/usr/bin/perl -w use strict; sub foo($) { print "$_[0]\n"; } my @foo_bar = qw[ foo bar ]; sub returns_array { return @foo_bar; } sub returns_two { return qw[ foo bar ]; } sub returns_two_2 { return ('foo','bar'); } foreach ('foo(@foo_bar);', 'foo($foo_bar[0..$#foo_bar]);', 'foo(@foo_bar[0,$#foo_bar]);', 'foo("foo","bar");', 'foo(map{$_}"foo","bar");', 'foo(qw[ foo bar ]);', 'foo(@{[qw[ foo bar ]]});', 'foo(${[qw[ foo bar ]]}[0,1]);', 'foo(map{$_}qw[ foo bar ]);', 'foo(reverse @foo_bar);', 'foo(returns_two());', 'foo(returns_two_2());', 'foo(returns_array());') { printf("%-30s : ", $_); eval($_) || print "# $@\n"; }