FlatFile-DataStore
view release on metacpan or search on metacpan
lib/FlatFile/DataStore.pm view on Meta::CPAN
sub read_record {
my( $self, $fh, $seekpos ) = @_;
# we don't call read_preamble() because we need len anyway
my $len = $self->preamblelen;
my $sref = $self->read_bytes( $fh, $seekpos, $len );
my $preamble = $self->new_preamble( { string => $$sref } );
$seekpos += $len;
$len = $preamble->reclen;
my $recdata = $self->read_bytes( $fh, $seekpos, $len );
my $record = $self->new_record( {
preamble => $preamble,
data => $recdata, # scalar ref
} );
return $record;
}
#---------------------------------------------------------------------
#
# =head2 read_preamble()
#
# Takes an open file handle (probably the key file) and a seek
lib/FlatFile/DataStore/Tiehash.pm view on Meta::CPAN
}
# for creates, $parms may be record, href, sref, or string
else {
if( !$reftype or $reftype eq "SCALAR" ) { # string
return $self->create({ data => $parms });
}
if( $reftype =~ /Record/ ) {
return $self->create( $parms );
}
if( $reftype eq 'HASH' ) { # e.g., {data=>'recdata',user=>'userdata'}
return $self->create( $parms );
}
else {
croak qq/Unsupported ref type: $reftype/;
}
}
}
#---------------------------------------------------------------------
# DELETE() supports tied hash access
t/001-datastore.t view on Meta::CPAN
is( $delrec->indicator, $ds->crud()->{'delete'}, "deleted indicator()" );
ok( $delrec->is_deleted, "is_deleted()" );
$ds->userdata( "testing" );
$record = $ds->create({ data => "Another test." });
is( $record->user, "testing", "userdata()" );
$record->data( "Yet another test." );
$record = $ds->create( $record );
$record2 = $ds->retrieve( $record->keynum );
my $recdata = $record->data;
my $recdata2 = $record2->data;
is( $recdata, $recdata2, "create( record )" );
$record2 = $ds->create({ record => $record, user => 'other user' });
is( $record2->user, 'other user', "create( record, user data )" );
$record = $ds->create({ data => \"Apple", user => 'fruit' });
is( $record->data, 'Apple', "create( scalar-ref, user data )" );
is( $record->user, 'fruit', "create( scalar-ref, user data )" );
}
#---------------------------------------------------------------------
( run in 0.640 second using v1.01-cache-2.11-cpan-454fe037f31 )