A couple of recent newbie-class queries (see
Replace part of a regex match,
replace text with function ?) have brought to my attention something I've naturally considered in the past but dismissed as I've known alternative ways to solve the problem.
Often text substitution is performed using the s/// operator (see perlop). E.g.
my $text = "The cow jumped over the moon";
$text =~ s/(\w+\s+)jumped/$1tripped/;
One might often consider a more natural way of expressing this as:
if ( $text =~ m/cow\s+(jumped)\s+over/ ) {
$1 = "tripped";
}
but of course this is not possible in Perl 5.
In fact it's not been uncommon to be finding myself wishing I could express such if match-replace expressions, not least because I might have other triggers that need to occur in the event that the match was made, e.g.:
if ( $text =~ m/cow\s+(\w+)\s+over/ ) {
do_action( $1 );
$1 = calculate_new_action( $1 );
}
rather than
if ( $text =~ m/cow\s+(\w+)\s+over/ ) {
do_action( $1 );
my $new_action = calculate_new_action( $1 );
$text =~ s/(cow\s+)(\w+)(\s+over)/$1$new_action$3/;
}
I wonder if others consider allowing the captured variables to be modified as possible and/or pragmatic?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.