package Problem_42; use strict; use warnings; ... main() unless caller; sub main { # local timing code my $solution = solve(); # print solution and time taken } sub solve { ... $return solution; } ... 1; #### # test.pl ... use Test::More; ... # Create %problems and populate with names and solutions keyed to problem numbers ... for my $i (sort { $a <=> $b } keys %problems) { my $module = 'Problem_' . $i; require $module . '.pm'; my $time0 = time(); my $result = ${module}->solve(); my $time1 = time(); printf "%3d (%2d s): ", $i, int($time1 - $time0 + 0.5); is ( $result, $problems{$i}->{solution}, $problems{$i}->{name} . ': answer' ); print ' ' x 12; cmp_ok ( ($time1 - $time0), '<', MAX_SECONDS, $problems{$i}->{name} . ': time' ); } done_testing(); #### # 1725_Pragma.pl use strict; use warnings; use First; use Second; #### # First.pm package First; use strict; use warnings; #use bignum; print "First\n"; 1; #### # Second.pm package Second; use strict; use warnings; use Math::BigFloat; print "Second\n"; my $f = Math::BigFloat->new(2); $f->bsqrt(); print "$f\n"; 1; #### 16:38 >perl 1725_Pragma.pl First Second 1.41421356237309504880168872420969807857 16:38 > #### 16:38 >perl 1725_Pragma.pl First Second 2 16:40 >