+----------------------------- 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'