in reply to Code that writes code
First, the generated code has several variable regexes, which may change during the life of the script, but not during one execution of the evalled code. For example:
Second, I'm using conditionals to generate different code, depending on various options:# code to match the stress regex $eval .= <<" EOT"; next unless /\$stress[$i]/o; EOT
And third, I'm using loops to generate repeated blocks of code:if (defined $stress[$i]) { # code to match the stress regex $eval .= <<" EOT"; next unless /\$stress[$i]/o; EOT }
Generating code and then executing it with eval makes the code more efficient; the various conditionals are executed once overall, rather than once per line of input; and the regexes are only compiled once per execution, rather than once per match.for (my $i=0; $i<=$#entry; ++$i) { # ... if (defined $stress[$i]) { # code to match the stress regex $eval .= <<" EOT"; next unless /\$stress[$i]/o; EOT } }
I also have an option that prints the generated code before it is evalled, to aid in debugging.
|
---|