use 5.38.0; package Part2; use Part1; use List::AllUtils qw/ sum /; my %spelled = ( one => 1, two => 2, three => 3, four => 4, five => 5, six => 6, seven => 7, eight => 8, nine => 9, ); sub resolve_spelled_numbers ($line) { my $re = join '|', keys %spelled, 1 .. 9; join "", map { $spelled{$_} // $_ } $line =~ /^.*?($re)/g, $line =~ /^.*($re)/g; } sub solution_2 ($input) { sum map { Part1::extract_number($_) } map { resolve_spelled_numbers($_) } split "\n", $input; } 1;