+----------------------------- In the scalar $s (interpreted as a str +ing), | +--------------------- if you find an _ (underscore) | | +----------------- that's followed by 0 or more of anythi +ng but an _ (underscore) | | | and then the end-of-string, | | | + -- replace it with a , (comma). | | | | V V V V $s =~ s{ _ (?= [^_]* \z) }{,}xms;
Update: See "Look-Around Assertions" in the Extended Patterns of perlre.
(And the use of <code> ... </code> tags would still be much appreciated.)
Another Update: If you have Perl version 5.10+, another way (see \K in Extended Patterns):
c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; my @flist = qw( 1st-device-CA_Eth.0/1 2nd-device_TX_Gig.1/1 3rd_device_MO_Gig.1/1 ); ;; for my $s (@flist) { print qq{'$s'}; $s =~ s{ .* \K _ }{,}xms; print qq{'$s'}; print ''; } " '1st-device-CA_Eth.0/1' '1st-device-CA,Eth.0/1' '2nd-device_TX_Gig.1/1' '2nd-device_TX,Gig.1/1' '3rd_device_MO_Gig.1/1' '3rd_device_MO,Gig.1/1'
In reply to Re^3: regex to rename last _ with ,
by AnomalousMonk
in thread regex to rename last _ with ,
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |