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


in reply to [perlre] $_ = /$re/ vs $_ =~ /$re/

Note that "$_ = /$re/" is actually equivalent to "$_ = ($_ =~ /$re/)". The final result that I would expect, is for ($_ =~ /$re/) to be interpretted in scalar context, resulting in a boolean value (1 or ""), and for the boolean value to be assigned to $_, which will alter the elements in @$dir to each be either 1 or "", depending on whether the element matched the regular expression or not.

Since you don't seem to be using @$dir again, this may have gone unnoticed. Since both expression invoke '$_ =~ /$re/', they do indeed 'do the same thing'.

If you are trying to reduce characters, try just "/$re/" without any mention of $_. As others recommended, you should really use "if (/$re/) {", as the match may not succeed.