Tanktalus has asked for the wisdom of the Perl Monks concerning the following question:

Is this supposed to work in 5.8.8?

#! perl -l use strict; use warnings; my $s = join '', map {"$_\n"} qw(abc def ghi jkl); my $m = qr/^def$/xms; print "Match? \"$s\" =~ qr/$m/"; print " 1 : ", $s =~ $m ? "YES" : "NO?"; print " 2 : ", $s =~ qr/^def$/xms ? "YES" : "NO?"; print " 3 : ", $s =~ qr/def/xms ? "YES" : "NO?";
With 5.8.8, I get, surprisingly:
$ perl5.8.8 sq.pl Match? "abc def ghi jkl " =~ qr/(?msx-i:^def$)/ 1 : NO? 2 : NO? 3 : YES
With 5.12.2, I get all YES. Either it's a bug that was fixed in newer perls, or I'm severely confused. Anyone can shed some light?

Replies are listed 'Best First'.
Re: regex /m flag
by ikegami (Patriarch) on Nov 09, 2010 at 17:03 UTC
    /m on embedded patterns was broken. The fix required the removal of $*
Re: regex /m flag
by kennethk (Abbot) on Nov 09, 2010 at 17:02 UTC
    Verified bug exists for perl, v5.8.5 built for x86_64-linux-thread-multi and does not exist for perl, v5.8.9 built for MSWin32-x86-multi-thread or perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi.
Re: regex /m flag
by JavaFan (Canon) on Nov 09, 2010 at 16:38 UTC
    IIRC, it's a bug fix. But I cannot find a perl*delta entry for it.