1package Stream::Buffered::Auto; 2use strict; 3use warnings; 4use base 'Stream::Buffered'; 5 6sub new { 7 my($class, undef, $max_memory_size) = @_; 8 bless { 9 _buffer => Stream::Buffered->create('PerlIO'), 10 _max => $max_memory_size, 11 }, $class; 12} 13 14sub print { 15 my $self = shift; 16 $self->{_buffer}->print(@_); 17 18 if ($self->{_max} && $self->{_buffer}->size > $self->{_max}) { 19 my $buf = $self->{_buffer}->{buffer}; 20 $self->{_buffer} = Stream::Buffered->create('File'), 21 $self->{_buffer}->print($buf); 22 delete $self->{_max}; 23 } 24} 25 26sub size { 27 my $self = shift; 28 $self->{_buffer}->size; 29} 30 31sub rewind { 32 my $self = shift; 33 $self->{_buffer}->rewind; 34} 35 361; 37