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


in reply to Feature Idea: qr//e (updated with solutions)

my ($regex) = map qr/$_/, join '|', map {quotemeta} qw/. | %/;

Replies are listed 'Best First'.
Re^2: Feature Idea: qr//e
by LanX (Cardinal) on Jan 19, 2017 at 08:02 UTC
        my $regex = qr/$_/ for join '|', map quotemeta, qw/. | %/;

    (untested from mobile)

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

      Hi LanX,

      Good thought, unfortunately that suffers from scoping issues (Update: see my reply later in this thread):

      $ perl -wMstrict -e 'my $x = $_ for "a"; print $x' Use of uninitialized value $x in print at -e line 1.

      Regards,
      -- Hauke D

        Well as I said, I couldn't test while posting from mobile.

        I though that post-fix-for doesn't have an own scope, analogous to post-fix-if

        So I ran a test and it turned out that post-fix-for is neither fish nor flesh, it's pretending and denying having an own scope ... ugh ...oO

        please notice how the redeclaration of $x is reported but the value gets lost.

        Looks like a bug...

        use strict; use warnings; my $y=666 if 1; warn $y; my $x=1; my $x=42 for 1; warn $x;

        "my" variable $x masks earlier declaration in same scope at c:/tmp/pm/ +scope_postfix_for.pl line 12. 666 at c:/tmp/pm/scope_postfix_for.pl line 7. Use of uninitialized value $x in warn at c:/tmp/pm/scope_postfix_for.p +l line 16. Warning: something's wrong at c:/tmp/pm/scope_postfix_for.pl line 16.

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Je suis Charlie!

Re^2: Feature Idea: qr//e
by haukex (Bishop) on Jan 19, 2017 at 11:54 UTC

    Hi Haarg,

    my ($regex) = map qr/$_/, join '|', map {quotemeta} qw/. | %/;

    Excellent idea, thank you! I've updated the root node.

    Thanks,
    -- Hauke D