in reply to Re^2: Regex (?{ code }) and use re 'eval'
in thread Regex (?{ code }) and use re 'eval'
What do you mean by "returns something"? I'm going to assume you mean "returns something defined". Adjust as needed.
foreach my $range (values %Build) { $message =~ s{ (\[ ([$range]+) \]) }{ my $val = return_number("$2"); defined($val) ? $val : $1 }exig }
If return_number is costly, you can memoize the returned value.
my %memoize; foreach my $range (values %Build) { $message =~ s{ (\[ ([$range]+) \]) }{ my $val = exists($memoize{$2}) ? $memoize{$2} : return_number("$ +2"); $memoize{$2} = $val; defined($val) ? $val : $1 }exig }
Why is Build a hash instead of an array? You don't use the keys. Also, Build is not a particularly good name.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Regex (?{ code }) and use re 'eval'
by SFLEX (Chaplain) on Nov 21, 2007 at 20:47 UTC |