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


in reply to If statement not working

if ($_ = (m/^[\$]\w/)) {

Solution pointed out below. This is an assignment (using =) clobbering $_ with an empty array the true/false result. An assignment of an undefined thing evaluates to false every time. Similar to if ($_ = ()) or if ($_ = undef).

Update - because I was curious:

perl -MO=Deparse,-P -e 'if($_ = (m/foo/)) { print 'hi' }' if ($_ = /foo/) { print hi $_; } -e syntax OK

A little more insight.

update 2- corrected ty