sub func { my ($error) = @_; my @results = ('some', 'values'); # 1 or more values. $error ? () : @results; } for (0..1) { my @results = func($_); print(@results ? "no error (@results)" : 'error', "\n"); } #### sub func { my ($error) = @_; my @results = (); # 0 or more values. $error ? undef : \@results; } for (0..1) { my $results = func($_); print($results ? "no error (@$results)" : 'error', "\n"); }