http://qs321.pair.com?node_id=895401

repellent has asked for the wisdom of the Perl Monks concerning the following question:

Given:
sub foo { my (undef, $x) = @_; print $_[0], $x; } my $big = 'a' x 99999999; foo($big, 'bar');

Does the list assignment of $_[0] to undef incur any significant runtime cost?

I expect that it doesn't, and would like to know what goes on under the hood.

I can't tell what happens in an aassign:
$ perl -MO=Concise -e '(undef) = $x' 8 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v:{ ->3 7 <2> aassign[t1] vKS ->8 - <1> ex-list lK ->5 3 <0> pushmark s ->4 - <1> ex-rv2sv sK/1 ->- 4 <$> gvsv(*x) s ->5 - <1> ex-list lK ->7 5 <0> pushmark s ->6 6 <0> undef sP ->7 -e syntax OK $ perl -MO=Concise -e '($y) = $x' 8 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v:{ ->3 7 <2> aassign[t1] vKS ->8 - <1> ex-list lK ->5 3 <0> pushmark s ->4 - <1> ex-rv2sv sK/1 ->- 4 <$> gvsv(*x) s ->5 - <1> ex-list lK ->7 5 <0> pushmark s ->6 - <1> ex-rv2sv sKPRM*/1 ->- 6 <$> gvsv(*y) s ->7 -e syntax OK