Thanks
\b .. \b worked fine
How do I find what charaters come under \b word boundary
perldoc perlre just says \b word boundary
is \b equivalent to [^\w\_\-\.]
Sudarshan Raghavan wrote:
> On Thu, 19 Sep 2002, Ramprasad A Padmanabhan wrote:
>
>
>>Hi All
>>
>> I am writing a script that will replace all instance of a particular
>>word another in a file
>>
>>The only problem is that I want to match only whole words
>>eg If $str="the there thee that the";
>>
>> I want to change to $str="abc there thee that abc";
>>
>>
>>$srcstr = 'the'
>>$dest = 'abc'
>>
>>$str=~s/([^\w\_\-\.])\Q$srcstr\E([^\w\_\-\.])/$1$dest$2/g;
>>this doesnt seem to work
>>
>>I will enclose my entire script here
>>#!/usr/bin/perl
>>#
>># This will work as sedfiles diff being it replaces only whole words
>># A word will mean only char seq containing \w \_ \- \.
>># No Regex is allowed in srcstring
>>#
>>
>>die "Usage $0 <srcstring> <deststring> <file1>..<file2>\n" unless (@ARGV
>> > 2 );
>>
>>$srcstr = shift(@ARGV);
>>$deststr = shift(@ARGV);
>>{
>> local $^I = '~';
>> while (<>) {
>>
>> # This does not work
>> s/([^\w\_\-\.])\Q$srcstr\E([^\w\_\-\.])/$1$deststr$2/g;
>>
>> # This works but not what I need
>> #s/\Q$srcstr\E/$1$deststr$2/g;
>
>
> What are the $1 and $2 here for, you are not capturing anything here.
> If you want to replcae all (whole) occurences of $srcstr by $deststr
> this should work
>
> s/\b\Q$srcstr\E\b/$deststr/g;
>
>
>> print;
>> }
>>}
>>
>>
>>
>>
>>
>
>
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]