in reply to read() and unpacking, data size issues
You can get the length of a packed string from the pack format like so:
Since you are on a win32 system, you need binmode on if you don't already.my ($pfmt,$line,@header = ("s50c150"); sub packlen { length pack $_[0]; # too fussy length pack $_[0], (unpack $_[0], (pack $_[0])); } read FILE, $line, packlen($pfmt) or die $!; @header = unpack $pfmt, $line;
You may have byte ordering problems with the integers, try "I50" and "N50", and "a150" or "A150" is probably what you want for the fixed-width string.
$ perl -e '$foo="I50a150";print length(pack $foo),$/' 350 $
Update: I was too fussy, length pack $pfmt is fine. Changed to suit.
After Compline,
Zaxo
|
|---|