package TwoWayHandle; sub TIEHANDLE { my ($class, $in, $out) = @_; bless [ \$in, \$out ], $class; } sub PRINT { my $self = shift; local *FH = ${ $self->[1] }; print FH @_; } sub READLINE { my $self = shift; local *FH = ${ $self->[0] }; ; } 1; #### use TwoWayHandle; tie *ACDC, TwoWayHandle => ( *STDIN, *STDOUT, ) or die "can't tie *ACDC: $!"; print ACDC "What's your name? "; $name = ; chomp $name; print ACDC "Hello, $name.\n";