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
In Section
Seekers of Perl Wisdom