Dear Sholmi,

/EuclidSymbol is not constant. I will vary based on the font used in the file.

Regards,
Ganesh


On Mon, Mar 15, 2010 at 6:36 PM, Shlomi Fish <shlo...@iglu.org.il> wrote:
> Hi Ganesh!
>
> First a few notes on your code.
>
> On Monday 15 Mar 2010 14:10:25 Ganesh Babu N wrote:
>> Dear All,
>>
>> I am using the following code to replace certain information in binary
>> mode.
>>
>> $s=time();
>> open(FH, "$ARGV[0]");
>> open(OUT, ">$ARGV[1]");
>
> Please see:
>
> http://perl.net.au/wiki/Freenode_Sharp_Perl_FAQ#How_should_I_write_my_code.3F
>
>> binmode FH;
>> binmode OUT;
>> $/=undef;
>> $line=<FH>;
>> $line=~s!(\d{3}\s(\/[^\n]*? f1)\s*([^\n]+sh\s*)+?\d{3}\s)ns!$1$2!gs
>> while($line=~/(\d{3}\s(\/[^\n]*? f1)\s*([^\n]+sh\s*)+?\d{3}\s)ns/gs);
>
> Why are you doing a /g substitution inside a loop checking for the same regex.
> The /g will replace everything. Furthermore, you have defined three captures
> and use only two. One of them should be (?:...).
>
>> print OUT $line;
>> $e=time();
>> $r=$e-$s;
>> close(FH);
>> close(OUT);
>> print "Done...\nRuntime: $r seconds";
>>
>> This is code is loading entire file content and doing the replacement.
>> If we read line by line we can avoid the out of memory problem. But my
>> replacement is depending on previous line. The below is the input:
>
> Then keep all the relevant previous lines in an array or string that will
> serve as a state.
>
>>
>> 224 /EuclidSymbol f1
>> (D) -22 673 sh
>> .....
>> 320 ns
>> .....
>> 221 ns
>>
>> The output should be as follows:
>>
>> 224 /EuclidSymbol f1
>> (D) -22 673 sh
>> .....
>> 320 /EuclidSymbol f1
>> .....
>> 221 /EuclidSymbol f1
>>
>
> Do you want to replace all the "ns" with the "/EuclidSymbol f1". This can be
> done using a loop like that:
>
> my $symbol;
> my $new_symbol;
> while (my $line = <$in_fh>)
> {
>        if (($new_symbol) = ($line =~ /....($symbol_re).../))
>        {
>                $symbol = $new_symbol;
>                print {$out_fh} $line;
>        }
>        else
>        {
>                $line =~ s{^(\d+\s+)ns}{$1$symbol};
>                print {$out_fh} $line;
>        }
> }
>
> Hope it helps.
>
> Regards,
>
>        Shlomi Fish
>
>> I tried with Tie::File but is not loading Binary data. Please suggest
>> how can i solve the problem. My file size is around 3GB
>>
>
>> Regards,
>> Ganesh
>
> --
> -----------------------------------------------------------------
> Shlomi Fish       http://www.shlomifish.org/
> First stop for Perl beginners - http://perl-begin.org/
>
> Deletionists delete Wikipedia articles that they consider lame.
> Chuck Norris deletes deletionists whom he considers lame.
>
> Please reply to list if it's a mailing list post - http://shlom.in/reply .
>

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to