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


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

    my $regex = qr/$_/ for join '|', map quotemeta, qw/. | %/;

(untested from mobile)

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

Replies are listed 'Best First'.
Re^3: Feature Idea: qr//e
by haukex (Bishop) on Jan 19, 2017 at 11:53 UTC

    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!

        Hi LanX,

        I think it's this:

        NOTE: The behaviour of a my, state, or our modified with a statement modifier conditional or loop construct (for example, my $x if ...) is undefined. The value of the my variable may be undef, any previously assigned value, or possibly anything else. Don't rely on it. Future versions of perl might do something different from the version of perl you try it out on. Here be dragons.

        Regards,
        -- Hauke D