You are not forced to read the whole file. You can read a few bytes and close it; there is nothing wrong with that.
In your case, since the information that you're looking for is always at the beginning of each file, and you have a way of identifying when each header ends you can do the following.
local $/ = "HEADER END\n"; # set input record separator
while ($file = <*.las>) {
open(FILE, $file) || die "Couldn't open $file : $!\n";
my $header = <FILE>;
close(FILE);
# process $header here
}
One thing I should mention here is this. Setting $/ simplifies things greately. But! If you're processing large files (you mentioned something about them being 40MB) then you better be sure they all contain those headers that you're talking about. If not, the whole file will be slurped into memory.
If you want to avoid that, you can do something along these lines
my $maxHeader = 50;
OUTER:
while ($file = <*.las>) {
open FILE, $file or die "Couldn't open $file : $!\n";
my $header = '';
while (<FILE>){
$header .= $_;
last if $_ eq "HEADER END\n";
if ($. > $maxHeader){
print "Invalid file format : $file\n";
close FILE;
next OUTER;
}
}
close FILE;
# process $header here
}
Hope this helps.
--perlplexer
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.