in reply to Word reverse

What did you try? What didn't work? We can be dramatically more helpful when you show us what you tried - see How do I post a question effectively?.

Do you necessarily need to unpack the data before using it? Given that nature of what you require, the most natural fix to me would be using a regular expression. Specifically, I would replace every set of four letters with their transposition:

#!/usr/bin/perl use strict; use warnings; my @lines = ('45d2ff76893a0033', '45d239a7dd200116'); for my $line (@lines) { $line =~ s/(.{4})(.{4})/$2$1/g; } print join "\n", @lines;

Update:and since you've changed your spec, a one-liner:

s/(.{4})(.{4})/$2$1/g for @lines;

Note that the new code you've posted does not compile.

Regarding your statement that "Efficiency is critical", that is a bad starting point - premature optimization is the root of all evil. Make it work first. If it is too slow, profile it and attack bottlenecks.