XXX: catch invalid rangematch() input (return undef, tests)
[perl/list-index.git] / lib / List / Index.pm
index 7214ced50c43057d929f8f34b9bf943016e134e3..c42db44eadb5be52310a3ec76b54df640eb06209 100644 (file)
@@ -43,7 +43,7 @@ sub ranges {
 
        for my $i (0 .. $#links - 1) {
                my ($link, $lastchar) = $links[$i + 1]->[0] =~ /(.*)(.)/;
-               $link .= $lastchar eq '.' ? 'z' : chr( ord($lastchar) - 1 )
+               $link .= $lastchar eq '.' ? 'a' : chr( ord($lastchar) - 1 )
                        unless $lastchar eq 'a';
                $links[$i]->[1] = $link;
        }
@@ -59,6 +59,10 @@ sub rangematch {
        my @allow;
 
        if (length $s1) {
+               if (length $s2) {
+                       $s1 le $s2 or $s1 =~ /^\Q$s2/ or return undef;
+               }
+
                my $prefix = '';
                my $char;
                for my $i (0 .. length($s1) - 1) {