in reply to Re: header footer
in thread header footer

no. It will only be there in the header and footer. you wont find a HDR or FTR in the body.

Replies are listed 'Best First'.
Re^3: header footer
by gupr1980 (Acolyte) on Mar 05, 2014 at 00:21 UTC
    hmm.. i just realized some of the responses are not shown in full. Just the header :) Sry i am reading through those now. Thanks.
      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.

      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.