my $foo = some_func();
my ($foo) = some_func(); # may or may not behave the same!
####
sub some_func {
# do stuff
return wantarray ? @results : \@results; # is void context OK?
}
####
sub some_func {
# do stuff
return wantarray
? @results
: defined wantarray
? \@results
: warn "Useless void context";
}
####
sub some_func {
# do stuff
if (wantarray) {
return @results;
elsif (defined wantarray) {
return \@results;
else {
warn "this is tedious";
}
}
####
use Attribute::Context;
sub some_func : Arrayref(WARNVOID) {
# do stuff
return @results;
}
####
sub some_func : Custom(Some::Class) {
# do stuff
return @results;
} # scalar context returns Some::Class->new(\@results)