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


in reply to RE: RE: Odd...
in thread Odd...

I think you can only use alternative delimiters if you use the complete form of the regex like:  $a =~ m AreA;

And then spaces aren't allowed anymore since 5.002 or somesuch. In fact in the above the space is REQUIRED between the "m" and the "AreA" portions or Ovid's bug kicks in and it doesn't parse correctly!

use strict; my $a = "freak"; my $b = "freakmAreA"; print "Yay!\n" if $a=~m AreA; print "Boo!\n" if $a=~mAreA; print "BUG!\n" if $b=~mAreA;

The above prints "Yay! and BUG!" in 5.6 under Linux. The "bare" word promotion is happening even when it shouldn't IMHO. Altho reading `perldoc perlop` leads me to believe that it should have not printed "Yay!" either:

If "/" is the delimiter then the initial m is optional. With the m you can use any pair of non- alphanumeric, non-whitespace characters as delimiters. This is particularly useful for matching path names that contain "/", to avoid LTS (leaning toothpick syndrome). If "?" is the delimiter, then the match-only-once rule of ?PATTERN? applies. If "'" is the delimiter, no interpolation is performed on the PATTERN.

... since really ...

$c =~ s eieioeio; #or $d =~ s ei$oeio$ioeieo;

... radiates pure evil. =)

--
$you = new YOU;
honk() if $you->love(perl)