in reply to read() and unpacking, data size issues

You can get the length of a packed string from the pack format like so:

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;
Since you are on a win32 system, you need binmode on if you don't already.

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