At 9:02 AM +0100 2/22/12, timothy adigun wrote:
On Wed, Feb 22, 2012 at 3:43 AM, John W. Krahn <jwkr...@shaw.ca> wrote:
> s...@missionstclare.com wrote:
>
The line
$text=~s/george/tim/;
causes a global substituion of "george" with "tim"
How can I limit the substituion to the first instance only?
Global substitution only works if you use the /g option but your example
does not use the /g option so it will only replace the first 'george' it
finds.
Correct, but sometimes this doesn't work all of the time, especially
with some very funny text files.
Could you please provide an example of where the given regular
expression fails to substitute only the first instance of the matched
pattern?
So, if John suggestion doesn't work as it should, then you may have to
enable slurp mode like this:
$/=undef or local $/;
So your code could read:
{
.....
$/=undef; ## or use local $/;
$text=~s/george/tim/;
........
}
Setting $/ will not affect the results of the substitution. It will
affect reading a file, but you are not reading a file within the
scope of the modified $/ variable.
You can use the File::Slurp module to read a file into a scalar
variable. Also check out 'perldoc -q entire' "How can I read an
entire file all at once?"
You could check *perldoc perlvar* for more information.
We don't know if the original poster was applying the substitution to
an entire file or to each line in a file. We don't even know if sb
was even working with files at all.
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/