The second candidate, wordOrd_b, is nearly identical to the first candidate, but substitutes the
Perl map function for the foreach loop that we relied on in the first attempt.

wordOrd_b
sub wordOrd_b {
my ()=@_;
my @ordStr=();
@ordStr=map { ord sh } split //,;
return join (" ",@ordStr);
}
The third candidate is super-compact, doing away with the split entirely and instead using
Perl's unpack method in a technique gleaned gleefully from the ord synopsis on page 114 of
Perl in a Nutshell (O'Reilly & Associates, 1998). We also dropped the interim variable
and instead refer to the first item in the incoming parameter list directly.

wordOrd_c
sub wordOrd_c {
return join (" ",unpack('C*',sh[0]));
}

Now, for the race. With all three subroutines revved up and raring to go, we can call upon
Benchmark's cmpthese function to test and compare the execution times of the three
candidates, resulting in a revealing summary table.

The winner, not surprisingly, is the code that appeared most efficient: version c, the unpack
solution. Indeed, from the numbers we can see that wordOrd_c ran 304,506.70 times per
second, quite a bit faster than the closest competitor in wordOrd_b. The nifty table provided by
cmpthese displays the results in startling percentages: wordOrd_c was 116% faster than
wordOrd_a and 55% faster than wordOrd_b.