my $data = tie $fh, 'Tie::Handle::Scalar::WithoutTemp'; print $fh "Hello world"; print $$data; package Tie::Handle::Scalar::WithoutTemp; use base 'Tie::Handle'; sub TIEHANDLE { my $classname = shift; my $data; bless \ $data, $classname; } sub WRITE { my ( $self, $scalar, $length, $offset ) = @_; $$data .= substr $scalar, $offset, $length; 1; } sub PRINT { $$data .= join $,, @_[ 1 .. $#_ ]; 1; } sub PRINTF { $$data .= sprintf $_[1], @_[ 2 .. $#_ ]; 1; }