Data-Handle
view release on metacpan or search on metacpan
lib/Data/Handle.pm view on Meta::CPAN
my %datastash;
use Symbol qw( gensym );
use Scalar::Util qw( weaken );
use parent qw( IO::File );
use Package::Stash 0.15; # has_symbol
use Carp ();
use Data::Handle::Exception;
use Data::Handle::IO;
use Try::Tiny qw( try catch );
lib/Data/Handle.pm view on Meta::CPAN
_e('BadFilePos')
->throw( "$targetpackage has a DATA symbol, but the filepointer"
. " is well beyond the __DATA__ section.\n"
. " We can't work out safely where it is.\n"
. $class->_stringify_metadata($targetpackage)
. "\n" );
}
my $sym = gensym();
my $xsym = $sym;
weaken($xsym);
## no critic( ProhibitTies )
tie *{$sym}, 'Data::Handle::IO', { self => $xsym };
${ *{$sym} }{stash} = {};
bless $sym, $class;
$sym->_stash->{start_offset} = $class->_get_start_offset($targetpackage);
$sym->_stash->{targetpackage} = $targetpackage;
$sym->_stash->{current_offset} = $class->_get_start_offset($targetpackage);
$sym->_stash->{filehandle} = $class->_get_data_symbol($targetpackage);
return $sym;
( run in 0.234 second using v1.01-cache-2.11-cpan-65fba6d93b7 )