I don't like the way you have to declare a checked variable:
$intfactory->Monitor(\ my $var) = 42;
Yes that's ugly. You can at least get rid of the backslash. $_[1] paseed to the method is an alias to $var so \$_[1] is \$var.
Note also that the value of a scalar assignment is itself an lvalue.
sub Monitor : lvalue {
my CheckFactory $self = shift;
my $rvar = \shift;
my $lvar = $$rvar;
tie $$rvar, 'Checkee', $self->{Closure};
$$rvar = $lvar;
$$rvar;
}
$intfactory->Monitor(my $var = 42);
If you want more syntactic sugar then take a look at attributes.