G'day Lady Aleena,
"I just can not come up with a list where this might be needed on alphabetical strings."
With split_sort(), as currently written, I can't see any use for the alpha sort type:
it will return the same as a plain sort (in all cases, as far as I can tell).
With an alpha sort type ignoring case, you could get this difference:
$ perl -E 'my @x = ("ade:Y", "Abc:X", "Afg:Z"); say for sort @x'
Abc:X
Afg:Z
ade:Y
$ perl -E 'my @x = ("ade:Y", "Abc:X", "Afg:Z"); say for sort { fc($a)
+cmp fc($b) } @x'
Abc:X
ade:Y
Afg:Z
With an alpha sort type expecting Unicode, you could get this difference:
$ perl -C -E 'my @x = ("\x{c5}de:Y", "Abc:X", "Afg:Z"); say for sort @
+x'
Abc:X
Afg:Z
Åde:Y
$ perl -MUnicode::Collate -C -E 'my @x = ("\x{c5}de:Y", "Abc:X", "Afg:
+Z"); say for Unicode::Collate->new->sort(@x)'
Abc:X
Åde:Y
Afg:Z
"I am now thinking that I should just put a note in saying that the alphabetical usage is redundant."
Perhaps not entirely redundant.
Consider its potential use in a scenario where you process an AoA
which holds a mixture of numeric and alphabetic arrays.
my @multi_sorts = (
[ $array1, ':', 'num' ],
[ $array2, '-', 'alpha' ],
[ $array3, ',', 'num' ],
);
handle_multi_mixed_sorts(\@multi_sorts);
# At this point in the code, each of the arrays in @multi_sorts
# has the original array still as the first element
# and the sorted array now as the fourth element.
sub handle_multi_mixed_sorts {
my ($multi_sorts) = @_;
for my $i (0 .. $#$multi_sorts) {
push @{$multi_sorts->[$i]}, [
sort { split_sort($a, $b,
$multi_sorts->[$i][1], $multi_sorts->[$i][2])
} @{$multi_sorts->[$i][0]}
];
}
return;
}
Do note that I just typed that code directly into my post:
it's entirely untested.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.