#!/usr/bin/perl -w use strict ; use warnings ; sub foo { my ($tag) = @_ ; print "$tag: ", wantarray ? "LIST" : "SCALAR", "\n" ; return wantarray ? ('a', 'b') : \78 ; } ; my $a = \foo('SCALAR \foo()') ; my @a = \foo('LIST \foo()') ; my $b = ${foo('SCALAR ${foo()}')} ; my @b = (${foo('LIST ${foo()}')}) ;