Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: Putting the stringified Regexp object into code

by kennethk (Abbot)
on Nov 06, 2012 at 19:10 UTC ( #1002562=note: print w/replies, xml ) Need Help??


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

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.

Replies are listed 'Best First'.
Re^4: Putting the stringified Regexp object into code
by sedusedan (Monk) on Nov 06, 2012 at 19:16 UTC
    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.

        Ah, sorry. You're right of course. I have removed the "qr".

        Also see my response to roboticus. Point taken, but I do want to generate string code in this case. eval()-ing the string is just one, not the only thing, I want to do with the it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002562]
help
Chatterbox?
[Corion]: thezip: start "some title" path\to\that\ application, but that will open another console window
[Corion]: thezip: If you want to confuse your users, use system(1, "that\\command" );, which will make Perl launch it in the background
[Corion]: That will keep the console window open even though the user can't type into it anymore
[thezip]: So I have a script that generates a log file. After script completion, I want tohave VIM open this logfile.
[thezip]: i don't get the command line "back" until I close VIM. No what I want to happen...
[thezip]: I currently don't have access to CYGWIN, else I'd just do a tail -f on the logfile.

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (11)
As of 2017-03-27 18:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (321 votes). Check out past polls.