sub dostuff {
my @array;
# doing stuff building @array
return @array;
}
...
my @returned = dostuff();
####
sub DoSomething {
my @array;
alias( @array ) if want( 'ARRAY' );
#Do Stuff Directly to the destination array
return;
}
...
my @returned = DoSomething();
##
##
sub DoStuff {
die 'Nothing to do in a void context'
if want( 'VOID' );
if( want( 'LIST' ) ) {
return map{
# Do stuff to generate the list
} ...;
}
my @array;
alias( @array ) if want( 'ARRAY' );
push @array, $stuff for ....;
return \@array if want( 'ARRAY/REF' );
# The callers array has been filled directly
# If we were called in an array context.
return;
}