sub somefunc { my $arg = shift; print "doing something with $arg\n"; return unless defined wantarray; print "doing expensive return value calc\n"; return wantarray ? ('foo','bar') : 'quz'; } somefunc("a"); # just prints "doing something with a" my $x = somefunc("b"); print "$x\n"; # prints "quz" my @y = somefunc("c"); print join(",",@y),"\n"; # prints "foo,bar"