package Tie::Print;
require Tie::Scalar; our @ISA = ('Tie::StdScalar');
sub STORE { print pop }
package Tie::Localtime::Scalar;
require Tie::Scalar; our @ISA = ('Tie::StdScalar');
sub FETCH { return scalar localtime }
etcetera
####
package Tie::Scalar::Miscellaneous;
use Carp;
use strict;
sub TIESCALAR {
my ($class, %functions) = @_;
$_ ||= q(croak 'Not implemented') for @functions{qw/store fetch/};
$_ = eval "sub { $_ ( \@_ ) }" for @functions{qw/store fetch/};
bless \%functions, $class;
}
sub STORE {
shift->{store}->(pop)
}
sub FETCH {
shift->{fetch}->();
}
####
tie my $printer, 'Tie::Scalar::Miscellaneous', store => 'print';
$printer = "Hello, world!\n";