In a regular expression, you can use variables as well: $variable =~ s/($pattern)+/..../ Beware that $pattern is interpolated, so if $pattern contains something like \, it may even become an error, e.g
To prevent this danger of interpolation, use /(\Q$pattern\E)+/ If you want to capture the multiple expression and not just a single appearance, put braces around and use the inner in a clustering way with ?: e.g $variable =~ s/((?:\Q$pattern\E)+)/..../ or in a better documented way:C:\>perl $pattern = "\\"; $variable = "abcde\\fg"; print $variable =~ /$pattern/; ^D Trailing \ in regex m/\/ at - line 4.
If you want to put code at the right hand of the substitution, you could use /e to evaluate code at the right hand sinde, e.g.$variable =~ s/ ( # start capturing to $1 (?: # not capturing, just clustering \Q$pattern\E # $pattern in a quoted way ) + # one or more times ) # end capturing to $1 / .... /x;
The best help may be reading perldoc perlre$variable =~ s/((?:\Q$pattern\E)+)/$1.$1.$1/e; print $variable;
Best regards,
perl -e "s>>*F>e=>y)\*martinF)stronat)=>print,print v8.8.8.32.11.32"
In reply to Re: Replacing with multiple occurrences.
by strat
in thread Replacing with multiple occurrences.
by maithree
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |