Biblio-COUNTER
view release on metacpan or search on metacpan
lib/Biblio/COUNTER.pm view on Meta::CPAN
$VERSION = '0.11';
sub report {
my ($cls, $how, %args) = @_;
if (ref($how) eq 'ARRAY') {
die "Instantiating a report from an array not yet implemented";
}
elsif (ref($how)) {
# Read report from a filehandle
my $fh = $how;
my $callbacks = delete($args{'callback'}) || {};
my $report = Biblio::COUNTER::Report->new(
%args,
'fh' => $fh,
'callback' => {
'output' => sub {
my ($self, $output) = @_;
print $output, "\n";
},
%$callbacks,
},
'rows' => [],
'errors' => 0,
'warnings' => 0,
# Current position within the report
'r' => 0,
'c' => '',
# Current scope (REPORT, HEADER, or RECORD)
'scope' => undef,
# Current field (NAME, DESCRIPTION, etc. or TITLE, PUBLISHER, etc.)
lib/Biblio/COUNTER.pm view on Meta::CPAN
=head1 CALLBACKS
While processing a report, a number of different B<events> occur. For
example, a B<fixed> event occurs when a field whose value is invalid
is corrected. For event different kind of event, a B<callback> may be
specified that is triggered each time the event occurs; see the B<report>
method for how to specify a callback.
Callbacks must be coderefs, not function or method names.
For example, the following callbacks may be used to provide an indication of
the progress in processing it:
$record_number = 0;
%callbacks = (
'begin_report' => sub {
print STDERR "Beginning report: ";
},
'end_header' => sub {
my ($report, $header) = @_;
print STDERR $report->name, "\n";
}
'end_record' => sub {
my ($report, $record) = @_;
++$record_number;
( run in 0.451 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )