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


in reply to why is $1 cleared at end of an inline sub?

TL;DR all

next time please condense it to the relevant part!

> Seems a bit weird to have the end of a local sub clear '$1', yet that seems to be what is happening

yes, easily shown in a SSCCE

DB<3> sub bla { "XXX"=~/(X*)/; print "inside $1" } DB<4> bla; print "outside $1" inside XXXoutside DB<5>

> What was the logic of forcing/doing that?

I'd say it's about localizing the inner sub to protect all caller levels from effects at a distance, consider

DB<5> "YYY"=~/(Y*)/; bla; print "old $1" inside XXXold YYY DB<6>

otherwise nobody could rely on $1 etc anymore after calling a random sub.

Using a dedicated closure var holding the copied content of $1 is the way to go in your use case.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery