The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Smart::Options::Declare;
use Test::More;
use Test::Exception;

@ARGV = qw(--foo=3);
is foo(), 6;
@ARGV = qw(--foo=3.14);
throws_ok { foo() } qr/Value '3\.14' invalid for option foo\(Int\)/;
done_testing;

sub foo {
    opts my $foo => 'Int';
    $foo*2;
}