* Fixed sort example using =(\d+)
authorbrian d foy <bdfoy@cpan.org>
Thu, 19 Nov 2009 23:56:12 +0000 (17:56 -0600)
committerbrian d foy <bdfoy@cpan.org>
Thu, 19 Nov 2009 23:56:12 +0000 (17:56 -0600)
commite1d16ab77edac901d7fbfed3aa4b801de9f3325e
tree9d97b41aa38036afe8fde8ae51dc4d891b322c3c
parente507fdf52b6cc8b84c112b13ae72787f5ee1ffa2
* Fixed sort example using =(\d+)

The example wanted to sort a list like qw(=1 =2 =a =3 =d). One
example tried to be clever with array indices and precomputed
an array in @nums. However, it forgot to leave holes for the
elements where it could not extract a run of digits. Once the
indices were misaligned, the sort didn't give the right answer.

I know you can read the patch, but since I fixed whitespace too,
a simple diff gives you a lot of output. The old example had:

    for (@old) {
        push @nums, /=(\d+)/;
        push @caps, uc($_);
    }

The new one keeps the indices aligned by using undef when the
match failed:

    for (@old) {
        push @nums, ( /=(\d+)/ ? $1 : undef );
        push @caps, uc($_);
    }

This issue was reported on Stackoverflow:

http://stackoverflow.com/questions/1754441
pod/perlfunc.pod