http://qs1969.pair.com?node_id=961936


in reply to Re^2: How to Remove Commas ?
in thread How to Remove Commas ?

The first comma was removed from each number.

The s/// operator by default removes only the first match. So:

my $var = "foobarfoobaz"; $var =~ s/foo//; say $var; # says "barfoobaz"

There are various flags you can include to alter its default behaviour though. One of the most useful is the "g" (global) flag...

my $var = "foobarfoobaz"; $var =~ s/foo//g; say $var; # says "barbaz"

Note that the slashes may be replaced with other characters, so you could equally write:

my $var = "foobarfoobaz"; $var =~ s@foo@@g; say $var; # says "barbaz"

Or even:

my $var = "foobarfoobaz"; $var =~ s{foo}{}g; say $var; # says "barbaz"

... which some people might find more readable. Though note that there are a handful of characters (hash, question mark and single quote spring to mind) that trigger special behaviours here (perlop has more details).

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'