in reply to Replacing with multiple occurrences.
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"
|
|---|