| ESPPlus-Storage documentation | view source | Contained in the ESPPlus-Storage distribution. |
ESPPlus::Storage::Reader - Reads ESP+ Storage repository files
use ESPPlus::Storage;
my $st = ESPPlus::Storage->new
( { filename => $Repository,
uncompress_function => \&uncompress } );
my $rd = $st->reader;
local *RC;
while ( my $record = $rd->next_record_body ) {
my $filename = $rd->record_number() . ".met";
open RC, ">", $filename or die "Couldn't open $filename for writing: $!";
print RC $$record;
close RC;
}
ESPPlus::Storage::Reader provides some methods for reading an ESP+ Storage
.REP repository database. In general the expectation is that you will read
the database serially - start with the first record and continue pulling
until there are no more records left. You can alter this by seeking on the
internal handle and changing the record_number.
Please also see ESPPlus::Storage for a sample uncompress wrapper
function.
ESPPlus::Storage::Reader::Tie provides an alternate and even easier reader interface.
$rd = ESPPlus::Storage::Reader->new(
{ uncompress_function => \&uncompress,
handle => $io_file_handle } );
The new() method has exactly two parameters, both of which are required. In
normal operation the ESPPlus::Storage::Reader-new> method is only used
internally by ESPPlus::Storage objects.
uncompress_function (as noted on ESPPlus::Storage) is a reference to
a function which is expected to receive a reference to a .Z compressed string
and should return a reference to an uncompressed string.
handle is an already opened IO::File object.
This is the primary focus of this module. It returns a
ESPPlus::Storage::Record object for the next record in the ESP+ Storage
.REP repository. You should call this method every time you need the next
object.
while( my $rc_obj = $d->next_record ) {
# ...
}
This returns a reference to the uncompressed content of the next record. In
contrast to next_record, this doesn't return a ESPPlus::Storage::Record
object.
while( my $rc = $d->next_record_body ) {
# ...
}
This returns the internal IO::Handle. If you seek or read from the handle
be sure to set the reader object's record_number value appropriately and
flush the internal buffer in ->{'_buffer'}. If you do that, you are
responsible for ensuring that both _buffer and the IO::Handle are correctly
set.
Returns the current record number.
Returns the .Z uncompress function. See the ESPPlus::Storage page for a sample function you can use.
Copyright 2003, Joshua b. Jore. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of either:
a) the GNU General Public License as published by the Free Software Foundation; version 2, or
b) the "Artistic License" which comes with Perl.
| ESPPlus-Storage documentation | view source | Contained in the ESPPlus-Storage distribution. |