Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^2: Putting the stringified Regexp object into code

by sedusedan (Monk)
on Nov 06, 2012 at 18:59 UTC ( #1002560=note: print w/replies, xml ) Need Help??


in reply to Re: Putting the stringified Regexp object into code
in thread Putting the stringified Regexp object into code

Yup, I am specifically generating Perl code (as string). The resulting code can be eval()-ed or embedded in other source code.
  • Comment on Re^2: Putting the stringified Regexp object into code

Replies are listed 'Best First'.
Re^3: Putting the stringified Regexp object into code
by kennethk (Abbot) on Nov 06, 2012 at 19:10 UTC

    How are you embedding? This sounds like something you should be solving using modules if you need to share the result among multiple scripts. But as I said, the code should stand as is. I would point out that the qr in $code = "if (\$data =~ qr/$re/) { blah() }"; is unnecessary.


    #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

      Please see my reply to Anomalous. I am generating a Perl code in a string, where $re will become literal in the generated code. The qr// can be replaced with m//, but it's rather necessary.
        No, it's not necessary -- I said the qr was unnecessary, not qr//.
        #!/usr/bin/perl use strict; use warnings; my $re = qr(/); $re =~ s!/!\\/!g; my $code = "if (\$data =~ /$re/) { blah() }"; my $data = '/'; eval $code; sub blah { print "hi" }

        I understand that you are auto-generating code; perhaps roboticus's response in Re^3: Putting the stringified Regexp object into code will make my point more clearly. There are times when string evaluated code is appropriate, but this would not be a time I'd select it.


        #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002560]
help
Chatterbox?
[Lady_Aleena]: Or what Discipulus said.
[shmem]: Lady_Aleena: geany supports ctags.
[Discipulus]: a good compromise can be my ($need, $opts_ref) = @_ a scalar and an hash reference
[Discipulus]: see you monks!
[Lady_Aleena]: shmem, let me get this sub rewritten, then I will look into how to use ctags in geany. Deal? 8)
[shmem]: Discipulus: yeah, that might eventually prepare the path for OO ;-)
[Lady_Aleena]: See you, Discipulus.
[shmem]: Lady_Aleena: that's up to you. I only wanted to show you a path that might be more comforting than command line grep ;-)
[Lady_Aleena]: shmem, I don't think any of my modules could be converted to OO. They are too procedural.
[Lady_Aleena]: Now I will see if my perl-fu is as bad as I think it is.

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2017-04-27 12:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (506 votes). Check out past polls.