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

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.

Replies are listed 'Best First'.
Re^5: header footer
by Kenosis (Priest) on Mar 05, 2014 at 01:20 UTC

    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.