use strict; use warnings; sub foo { my @list if 0; print "list: (@list)\n"; push @list, @_; \@list; } my $ref1 = foo(1..3); push @$ref1, 'a', 'b'; my $ref2 = foo(4..6); print "first ref: (@$ref1)\n"; print "last list: (@$ref2)\n"; __END__ list: () list: () first ref: (1 2 3 a b) final list: (4 5 6) #### use strict; use warnings; sub foo { my @list if 0; print "list: (@list)\n"; push @list, @_; \@list; } my $ref1 = foo(1..3); push @$ref1, 'a', 'b'; my $ref2 = foo(4..6); print "first ref: (@$ref1)\n"; print "final list: (@$ref2)\n"; __END__ list: () list: (1 2 3 a b) first ref: (1 2 3 a b 4 5 6) last list: (1 2 3 a b 4 5 6) #### use strict; use warnings; { my @list; sub foo { print "list: (@list)\n"; push @list, @_; \@list; } } my $ref1 = foo(1..3); push @$ref1, 'a', 'b'; my $ref2 = foo(4..6); print "first ref: (@$ref1)\n"; print "final list: (@$ref2)\n";