Hi all,

I would like to read in a binary file and extract the 4-byte ints from it. Under Linux, something like "od -t uI". I got it working as follows:


my $buffer = <STDIN>;
my @buffer = split //, $buffer;
for (my $i = 0; $i < length ($buffer); $i += 4) {
  print unpack ('I', $buffer[$i].$buffer[$i + 1].$buffer[$i + 2].$buffer[$i + 3]), 
"\n";
}


And I was wondering if there was a way of doing this without the for loop. (I am referring to the unpack; not the print.) The perldocs for unpack says:

"unpack does the reverse of pack: it takes a string and expands it out into a list of values. (In scalar context, it returns merely the first value produced.)"

So, I thought this means I could give it a string and get a list of values like 
this:

my @tmp = unpack ('I', $buffer);

which does not work -- it only converts the first 4 bytes into an integer. Anyway, if the above code with a for loop is the best way, I'm happy to stick with it -- just wondering if I'm missing out on something with unpack...

Thanks!

Ray




--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to