use Devel::Peek qw(SvREFCNT); sub return_array { my @array = (42); print "\@array declared. Refcount: ", SvREFCNT(@array), "\n"; my $ref = \@array; print "A reference has been taken to \@array. Refcount: ", SvREFCNT(@array), "\n"; return $ref; } my $aref = return_array(); print "Function returned a reference. Refcount:", Devel::Peek::SvREFCNT(@$aref), "\n"; #### @array declared. Refcount: 1 A reference has been taken to @array. Refcount: 2 Function returned a reference. Refcount:1