1: sub seval
2: {
3: my ($sub) = shift;
4: $vni++;
5: $sub =~ s#s/([^/]+)/([^/]+)/(.+)#s/\1/\$i$vni++ == \3 ? \2 : \$&/egs#;
6: return $sub;
7: }
8:
9: # Evals 's/foo/$i1++ == 1 ? bar : $&/egs', replacing match 3 only
10: eval(seval("s/foo/bar/2"));
|
|---|