my $self = shift;
    my $fn = $self->[FILENAME];
    my $fh = $self->[FILEHANDLE];

    if ($fh) {
	seek $fh, 0, SEEK_END;
	return tell($fh)- $self->[STARTPOS];
    } elsif ($fn) {
	return (-s $fn) - $self->[STARTPOS];
    } else {
	return length($self->[BUFFER]);
    }

NAME

Data::TemporaryBag - Handle long size data using temporary file .

SYNOPSIS

use Data::TemporaryBag;

$data = Data::TemporaryBag->new;
# add long string
$data->add('ABC' x 1000);
# You can use an overridden operator
$data .= 'DEF' x 1000;
...
$substr = $data->substr(2997, 6);  # ABCDEF

DESCRIPTION

Data::TemporaryBag module provides a bag object class handling long size data. The short size data are kept on memory. When the data size becomes over $Threshold size, they are saved into a temporary file internally.

METHOD

Data::TemporaryBag->new( [$data] )

Creates a bag object.

$bag->clear

Clears $bag.

$bag->add( $data )

Adds $data to $bag. You can use an assignment operator '.=' instead.

$bag->substr( $offset, $length, $replace )

Extracts a substring out of $bag. It behaves similar to CORE::substr except that it can't be an lvalue.

$bag->clone

Creates a clone of $bag.

$bag->value

Gets data of $bag as a string. It is possible that the string is extremely long.

$bag->length

Gets length of data.

$bag->defined

Returns if the data in $bag are defined or not.

$bag->is_saved

Returns the file name if $bag is saved in a temporary file.

GLOBAL VARIABLES

$Data::TemporaryBag::Threshold

The threshold of the data size in kilobytes whether saved into file or not. Default is 10.

$data::TemporaryBag::MaxOpen

The maximum number of the opened temporary files. Default is 10.

COPYRIGHT

Copyright 2001 Yasuhiro Sasama (ySas), <ysas@nmt.ne.jp>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.