thanks rob and Samstag..
have done it
thanks a lot.
On 11/25/06, Rob Dixon <[EMAIL PROTECTED]> wrote:
Mumia W. wrote:
>
> On 11/25/2006 06:40 AM, perl pra wrote:
>>
>> Here is the code i have written...
>>
[snip]
>>
>> open $LOGFILE, '<', $file;
>> while ($line1 = <$LOGFILE> ) {
>> if ($line1 =~ m/$key/) {
>> system("perl -i.bak -p -e 's/$line1/$repline/g' $file");
>> close $LOGFILE;
>> last;
>> }
>> }
>>
[snip]
>>
>> if i run the script I am getting the following errror..
>>
>>
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>> Can't find string terminator "'" anywhere before EOF at -e line 1.
>>
>> What am i doing wrong?
>>
>
> My eyes are too old to see a stray ' somewhere in a program. My guess is
> that it has something to do with the call to system (which shouldn't be
> called anyway).
>
It's for two reasons. Firstly $line1 isn't chomped, so there is a newline
before
the second slash in the substitution; and secondly Windows doesn't
recognise
single quotes as being special on a command line, so Perl is being passed
a
parameter list like:
-i.bak
-p
-e
's/PROJ_FOLDER=D:\Proj
/PROJ_FOLDER=D:\Proj/g'
E:/temp/FT/config/FTMessageArchive.configd
and clearly the one-liner has no string terminator!
Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>