package Recall;
sub recall {
shift->(@_);
}
sub recallable_sub(&;$) {
my $coderef = shift;
bless($coderef)->recall(@_);
}
local $\ = "\n";
print recallable_sub {
my $recall = shift;
$_[0] <= 1 ? 1 : $_[0] * $recall->recall( $_[0] - 1 );
}($_) for (1..9);