use 5.38.0; use Benchmark ':hireswallclock'; use Path::Tiny; use JSON qw/ to_json /; use DateTime; use Part1; use Part2; my $day = path('.')->absolute->basename =~ s/^0//r; my $year = path('.')->absolute->dir->basename; my @parts = ( { part => 1, sub => \&Part1::solution_1, expected => 'TODO' }, { part => 2, sub => \&Part2::solution_2, expected => 'TODO' }, ); my $input = path('./input')->slurp; for my $part (@parts) { my $res = Benchmark::countit( 10, sub { $part->{sub}->($input) == $part->{expected} or die; } ); my $result = { day => $day, year => $year, #variant => '', language => 'perl', part => $part->{part}, time => $res->cpu_a / $res->iters, timestamp => DateTime->now->iso8601, }; say to_json $result; }