in reply to Re^2: Convert binary file to ascii
in thread Convert binary file to ascii

Well, the $ctr = 0 doesn't do anything useful, and the $ctr += 1 could be merged into the if conditional.

my @converted_list = map { sprintf('0x%04x', $_) } unpack('v*', $line) +; my $ctr; foreach (@converted_list) { print OUTFILE "$_, "; print OUTFILE "\n" unless ++$ctr % 8; }

You could merge of all that together if you so desired, but that's probably a bit odd.

my $ctr; print map { ++$ctr % 8 ? "$_, " : "$_\n" } map { sprintf('0x%04x', $_) } unpack('v*', $line);

The simplest solution is probably to omit the counter altogether by only reading in 16 bytes at a time. As a bonus, it doesn't leave trailing comma when the file isn't an exact multiple of 16 bytes long.

# Each line has 8 16-bit words, so 16 bytes. local $/ = \16; while (<INFILE>) { print join ', ', map { sprintf('0x%04x', $_) } unpack('v*', $_); print("\n"); }