in reply to Interpolate variable into regexp at time of definition rather than execution, as a filter for Path::Iterator::Rule

I agree with ikegami, the closure variable $int shouldn't change.

Unless this module is messing with internals, the most likely reason is your code snippet is not what you really run

You said

> Naive code:

Could it be you forgot my or maybe $1 is undefined because your if clause does more complicated checks?

Most importantly:

Can you reproduce this problem with exactly the demonstrated code?

Update

Provided this is not an XY Problem.

Something roughly like (untested)...

my $code_ref = eval "sub{ m#INT $int# }" ; $rule->and($code_ref);

...will hardcode $int into the sub right away.

But be careful to keep full control of $int and to catch potential eval errors in $@

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

  • Comment on Re: Interpolate variable into regexp at time of definition rather than execution, as a filter for Path::Iterator::Rule (updated)
  • Select or Download Code