my @converted_list = map { sprintf('0x%04x', $_) } unpack('v*', $line); my $ctr; foreach (@converted_list) { print OUTFILE "$_, "; print OUTFILE "\n" unless ++$ctr % 8; } #### my $ctr; print map { ++$ctr % 8 ? "$_, " : "$_\n" } map { sprintf('0x%04x', $_) } unpack('v*', $line); #### # Each line has 8 16-bit words, so 16 bytes. local $/ = \16; while () { print join ', ', map { sprintf('0x%04x', $_) } unpack('v*', $_); print("\n"); }