in reply to subroutines and returning lists...

You should just be able to set an array equal to the return value of the subroutine (like you did in your first try). Are you sure the code isn't working somewhere else? What is the error you're getting or what specifically isn't working?

This works for me:

sub t { @file = ('foo', 'moo', 'bar'); return @file; } @tmp = t(); print @tmp; # print t(); would also work...
and outputs foomoobar like expected.