The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings FATAL => 'all';

use Test::More tests => 3;    # last test to print
use Function::Parameters qw(:strict);


my $evalcode = do {
    local $/ = undef;
    <DATA>;
};

ok(
    do {
        my $r = eval $evalcode;
        die $@ if not $r;
        1;
    },
    'Basic Eval Moose'
);

my $foo = foo->new({});
is ($foo->example (), 1, 'First method declared');
is ($foo->example2(), 2, 'Second method declared (after injected semicolon)');

__DATA__
{
    package foo;

    use Function::Parameters qw(:strict);
    method new($class: $init) { bless $init, $class }
    method example()  { 1 } # look Ma, no semicolon!
    method example2() { 2 }
}
1;