Acme-Tests
view release on metacpan or search on metacpan
lib/Acme/Tests.pm view on Meta::CPAN
use List::Util qw(shuffle);
field unanswered => {}, -init => '$self->load_tests()';
field tests => {}, -init => '$self->load_tests()';
sub data {
my $package = shift || ref($self);
local $SIG{__WARN__} = sub {};
local $/;
eval "package $package; <DATA>";
}
sub load_tests {
my $lib = $self->data;
my $tests = {};
for(split(/\n----\n/,$lib)) {
s/^\s+//; s/\s+$//s;
next unless $_;
my ($q,$a) = $_ =~ /(.+?)\n+Ans:\s*(.+?)\n*/s;
next unless $q && $a;
lib/Acme/Tests.pm view on Meta::CPAN
return $q;
}
sub is_correct {
my ($q,$a) = @_;
$a =~ s/^\s+//gs;
$a =~ s/\s+$//gs;
return ($self->tests->{$q} eq lc($a))
}
__DATA__
Who Invents Perl ?
(1) Larry Nelson
(2) Larry Wall
(3) Larry King
(4) Some guy with "Perl" in his name
Ans: 2
----
2 + 2 = ?
Ans: 4
----
lib/Acme/Tests/Perl.pm view on Meta::CPAN
package Acme::Tests::Perl;
use Acme::Tests -Base;
our $VERSION = '0.01';
__DATA__
Which one is an author id on CPAN ?
(1) jhh
(2) jhi
(3) jhj
(4) jhk
Ans: 2
----
Which debugger does lwall use ?
(1) perl -d
(2) gdb
( run in 0.851 second using v1.01-cache-2.11-cpan-140bd7fdf52 )