sub log_it
{
state $fh = do { open my $x, '>>', 'mylog.txt'; $x };
my $message = shift;
my $timestamp = time;
print $fh $timestamp . ": " . $message . "\n";
}
####
{
package Logger;
use Any::Mo;
has handle => (is => 'ro');
sub log_it {
my ($self, $message) = @_;
my $timestamp = time;
print {$self->handle}
$timestamp . ": " . $message . "\n";
}
}
my $logger = Logger->new(handle => $fh);
$logger->log_it("Hello");
$logger->log_it("World");
####
{
package Logger;
use Any::Mo;
use overload '&{}' => sub {
my $self = shift;
return sub { $self->log_it(@_) };
};
has handle => (is => 'ro');
sub log_it {
my ($self, $message) = @_;
my $timestamp = time;
print {$self->handle}
$timestamp . ": " . $message . "\n";
}
}
my $logger = Logger->new(handle => $fh);
$logger->("Hello");
$logger->("World");