perl -le"sub f{ \my $x } print f() for 1..10;" #### sub DESTROY {say "DESTROYED"} sub f{ bless \my $x } say f() for 1..10; __END__ main=SCALAR(0x9721530) DESTROYED main=SCALAR(0x9704c30) DESTROYED main=SCALAR(0x9721530) DESTROYED main=SCALAR(0x9704c30) DESTROYED main=SCALAR(0x9721530) DESTROYED main=SCALAR(0x9704c30) DESTROYED main=SCALAR(0x9721530) DESTROYED main=SCALAR(0x9704c30) DESTROYED main=SCALAR(0x9721530) DESTROYED main=SCALAR(0x9704c30) DESTROYED #### my @a; sub f{ push @a, \my $x; $a[-1] } say f() for 1..10; __END__ SCALAR(0x9c34108) SCALAR(0x9c33c1c) SCALAR(0x9c41f8c) SCALAR(0x9c33f50) SCALAR(0x9c341a8) SCALAR(0x9c34180) SCALAR(0x9c33f00) SCALAR(0x9c50534) SCALAR(0x9c5050c) SCALAR(0x9c504e4)