http://www.perlmonks.org?node_id=506990


in reply to how to state this by REL

The regexp is correct. The problem is your string. Use single quote instead of double quote, to avoid interpolation. Try this code:

{ my $name = "s@--__"; print $name, "\n"; if ($name =~ /\A[a-zA-Z][\w.-]*\z/) { print "match\n"; } else { print "not match\n"; } } { my $name = "s!!!@@@___"; print $name, "\n"; if ($name =~ /\A[a-zA-Z][\w.-]*\z/) { print "match\n"; } else { print "not match\n"; } } { my $name = 's@--__'; print $name, "\n"; if ($name =~ /\A[a-zA-Z][\w.-]*\z/) { print "match\n"; } else { print "not match\n"; } } { my $name = 's!!!@@@___'; print $name, "\n"; if ($name =~ /\A[a-zA-Z][\w.-]*\z/) { print "match\n"; } else { print "not match\n"; } }

Which prints:

Possible unintended interpolation of @___ in string at math1.pl line 1 +1. s-__ match s!!!@@ not match s@--__ not match s!!!@@@___ not match