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 >