# Sample working while() loop $sourceMetacodeLen = length $sourceMetacode; $sourceMetacodePos = 0; while ($sourceMetacodePos < $sourceMetacodeLen) { $recordLen = unpack( 'n', substr $sourceMetacode, $sourceMetacodePos, 2); $record = substr( $sourceMetacode, $sourceMetacodePos + 2, $recordLen - 2); # not relevant to the example # $parse .= ${translate_record(\$record, $sourceMetacodePos, \@fonts)}; $sourceMetacodePos += $recordLen; }