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]

Reply via email to