Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Re: Re: Applying a RegEx in a variable

by George_Sherston (Vicar)
on Aug 10, 2001 at 17:56 UTC ( [id://103872]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Applying a RegEx in a variable
in thread Applying a RegEx in a variable

Hm. Yes. Quite right.
@a = split(/\//,$RegEx); $m = pop @a; shift @a; $s = join("/",@a);
Better?
On the other question, I don't think eval does it, because it doesn't return the dynamically scoped variables. What I meant by 'requoting' was the kind of thing abstracts suggested above (which is a fine solution if the problem allows it to work, but seemingly it doesn't). So I think there's no alternative to thuggery.

One of the one-hand-clapping paradoces of perl, as I understand it, is that it encourages us to do what we like with it, including the things it doesn't let us do. Perl lets you parse anything, even perl (or PERL)! Only perl allows something that isn't perl to parse perl! La lutte continue!

§ George Sherston

Replies are listed 'Best First'.
Re4: Applying a RegEx in a variable
by Hofmator (Curate) on Aug 10, 2001 at 18:47 UTC

    <some code>
    Better?
    Yes, it's better but it still breaks. Consider e.g. giving the modifiers in a different order (/mi instead of your /im), giving multiple modifiers (/ii is perfectly legal) using different delimiters (m!pattern!) and so on.

    I'm not saying that it is impossible to parse this regex construct by hand - but why should want to do that? The eval solution always works - if $RegEx is a legal perl pattern matching operator and you can pass out anything with the construct I explained elsewhere in this thread.

    Your solution restricts the number of possible patterns and the ways of providing them. The qr solution suffers from the same problems, only it is less restrictive. And the eval is slow but gives you the whole range of possible pattern matching constructs (even s/// would work) and more (which can become a problem/security concern).

    To sum up, without knowing the problem better (where does the $RegEx come from, what should be achieved with it, ...) we cannot tell which solution to favour. And as always, TMTOWTDI :)

    -- Hofmator

      Hmm. I agree. It really would be mad to proliferate if / else statements to deal with all the different permutations of modifiers!

      Also agree with what you said earlier - eval is the way to go, but only if you don't need the dynamically scoped variables.

      I wonder if future perl releases will allow variables as modifiers -
      $modifier = 'i' # or anything else $string =~ /$regex/$modifier;
      - that would make this problem (and others like it?) a lot easier.

      § George Sherston

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://103872]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2024-04-25 16:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found