X-Git-Url: http://git.shiar.net/perl/list-index.git/blobdiff_plain/c6b7152b5b448744cce44c7ae52cf530c1e19bba..f201c1cafae5e0a87e562961316c7650b0e2231a:/lib/List/Index.pm diff --git a/lib/List/Index.pm b/lib/List/Index.pm index 57027fa..3663c24 100644 --- a/lib/List/Index.pm +++ b/lib/List/Index.pm @@ -62,14 +62,14 @@ sub ranges { } use List::MoreUtils 'uniq'; - @links = map { [$_] } uniq @links; + @links = uniq @links; for my $i (0 .. $#links - 1) { - my ($link, $lastchar) = $links[$i + 1]->[0] =~ /(.*)(.)/; + my ($link, $lastchar) = $links[$i + 1] =~ /(.*)(.)/; $link .= $lastchar le 'a' ? '.' : chr( ord($lastchar) - 1 ); - next if $link eq $links[$i]->[0] and $i; - $links[$i]->[1] = $link; + next if $link eq $links[$i] and $i; + $links[$i] .= '-'.$link; } - $links[-1]->[1] = ''; + $links[-1] .= '-'; return \@links; } @@ -92,6 +92,7 @@ sub rangematch { my $next = $char; $next = chr( ord($char) + 1 ) if length $s1 > $i + 1; my $last = 'z'; + next if $next gt $last; if (length $s2 > $i) { if ($s2 =~ /^\Q$prefix/) { $last = substr $s2, $i, 1;