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??

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"
}
[download]

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.

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.