aboutsummaryrefslogtreecommitdiff
path: root/challenge-135/bruce-gray/perl/ch-1.pl
blob: 1d25bddda65695b364f982cb15f51ab0c36548be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use Modern::Perl;
use Test::More;

my @tests = (
    [ 1234567, 345 ],
    [    -123, 123 ],
    [       1, 'too short' ],
    [      10, 'even number of digits' ],
);
plan tests => 0+@tests;

sub middle_three_digits {
    die if @_ != 1;
    my $a = abs shift;
    my $l = length $a;
    return 'even number of digits' if $l % 2 == 0;
    return 'too short'             if $l < 3;
    return substr $a, ($l - 3) / 2, 3;
}

for (@tests) {
    my ( $input, $expected ) = @{$_};
    my $got = middle_three_digits($input);
    is $got, $expected, "middle_three_digits($input)";
}