Blame


1 1ddd2d4e 2023-09-10 jrmu #!/usr/bin/perl
2 1ddd2d4e 2023-09-10 jrmu use utf8;
3 1ddd2d4e 2023-09-10 jrmu use strict;
4 1ddd2d4e 2023-09-10 jrmu use warnings;
5 1ddd2d4e 2023-09-10 jrmu
6 1ddd2d4e 2023-09-10 jrmu use v5.12;
7 1ddd2d4e 2023-09-10 jrmu
8 1ddd2d4e 2023-09-10 jrmu my %patterns = (
9 1ddd2d4e 2023-09-10 jrmu Gilligan => qr/(?:Wiley )?Gilligan/,
10 1ddd2d4e 2023-09-10 jrmu 'Mary-Ann' => qr/Mary-Ann/,
11 1ddd2d4e 2023-09-10 jrmu Ginger => qr/Ginger/,
12 1ddd2d4e 2023-09-10 jrmu Professor => qr/(?:The )?Professor/,
13 1ddd2d4e 2023-09-10 jrmu Skipper => qr/Skipper/,
14 1ddd2d4e 2023-09-10 jrmu 'A Howell' => qr/Mrs?. Howell/,
15 1ddd2d4e 2023-09-10 jrmu );
16 1ddd2d4e 2023-09-10 jrmu
17 1ddd2d4e 2023-09-10 jrmu rightmost(
18 1ddd2d4e 2023-09-10 jrmu 'There is Mrs. Howell, Ginger, and Gilligan',
19 1ddd2d4e 2023-09-10 jrmu @patterns{ sort keys %patterns }
20 1ddd2d4e 2023-09-10 jrmu );
21 1ddd2d4e 2023-09-10 jrmu
22 1ddd2d4e 2023-09-10 jrmu sub rightmost {
23 1ddd2d4e 2023-09-10 jrmu my( $string, @patterns ) = @_;
24 1ddd2d4e 2023-09-10 jrmu
25 1ddd2d4e 2023-09-10 jrmu my $rightmost = -1;
26 1ddd2d4e 2023-09-10 jrmu while( my( $i, $pattern ) = each @patterns ) {
27 1ddd2d4e 2023-09-10 jrmu my $position = $string =~ m/$pattern/ ? $-[0] : -1;
28 1ddd2d4e 2023-09-10 jrmu $rightmost = $position if $position > $rightmost;
29 1ddd2d4e 2023-09-10 jrmu }
30 1ddd2d4e 2023-09-10 jrmu
31 1ddd2d4e 2023-09-10 jrmu return $rightmost;
32 1ddd2d4e 2023-09-10 jrmu }