http://www.perlmonks.org?node_id=189604

John M. Dlugosz has asked for the wisdom of the Perl Monks concerning the following question:

I've commonly used two ways to look at each byte in turn of a binary buffer.

The clearest is probably

foreach my $byte (unpack "C*", $string) { do something with my $byte
But I've also used something like
while ($string =~ /./sg) { do something with $1
and always found the equivilent construct using substr instead of a regex to be unenlightened.

But what's a good way to do this with a potentially large buffer? Does the first way generate a huge list first, or does it optomize down like 1..100000 does in a modern perl build?

Is there a, shall we say even "cooler", method that I'm missing?

—John