Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: header footer

by gupr1980 (Acolyte)
on Mar 05, 2014 at 00:21 UTC ( [id://1077020]=note: print w/replies, xml ) Need Help??


in reply to Re^2: header footer
in thread header footer

hmm.. i just realized some of the responses are not shown in full. Just the header :) Sry i am reading through those now. Thanks.

Replies are listed 'Best First'.
Re^4: header footer
by gupr1980 (Acolyte) on Mar 05, 2014 at 01:04 UTC
    So this is the one that i tried and it works. Thanks kenosis and others for taking the time.
    #!/usr/bin/perl use strict; use warnings; open FILE1,"input.txt"; open FILE2,">>output.txt"; foreach my $line ( <FILE1> ) { $_= $line; s/^HDR.{47}//; s/\KFTR.{27}//; print FILE2 $_; } close FILE1; close FILE2;
    this made the most clarity for me. I am assuming that the entire file doesnt gets stored in the $_ in this approach, correct me if i am wrong. and the file is only getting read one line at a time. This i want to make sure so that it performs well when i actually test with the huge file.

      Consider the following instead:

      use strict; use warnings; use autodie; open my $FILE1, '<', 'input.txt'; open my $FILE2, '>', 'output.txt'; while (<$FILE1>) { s/^HDR.{47}|FTR.+//; print $FILE2 $_; } close $FILE1; close $FILE2;
      • autodie will trap the file i/o errors (you're not handling these, but you should)
      • Use only lexical (my) file handles
      • Use while to iterate through the file
      • The two substitutions were combined into one

      If FTR marks the footer to the end of the line, you can just use FTR.+ to remove it, since in your example there were only 30 characters left--including FTR. However, it's certainly OK to use FTR.{27}, if you prefer.

Re^4: header footer
by gupr1980 (Acolyte) on Mar 05, 2014 at 13:22 UTC
    i tried testing this with the big file.
    while ( <$FILE1> ) { s/^HDR.{47}//;
    is not stripping off the HDR and the following 47 characters.It looks like the 47th character is on a newline and hence not working? If i do a s/^HDR.{10}//; as a test it strips off the HDR fine. i also tried s/^HDR.{47}//g; doesnt make a difference. ***************** Never mind, found it. s/^HDR.{47}//s did it. Thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1077020]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2024-04-24 08:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found