---
name: "Biblio::COUNTER::Processor"
section: "3pm"
platform: "linux"
package: "libbiblio-counter-perl"
version: "0.11-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Biblio::COUNTER::Processor"
---

# Biblio::COUNTER::Processor(3pm)

superclass for Biblio::COUNTER processors

## NAME

Biblio::COUNTER::Processor - superclass for Biblio::COUNTER processors

## SYNOPSIS

```
    # Use
    use Biblio::COUNTER::Processor;
    $processor = Biblio::COUNTER::Processor->new;
    $processor->ignore(@events);
    $report = $processor->run;
    # Subclass
    use MyProcessor;
    @MyProcessor::ISA = qw(Biblio::COUNTER::Processor);
    # Event handlers
    sub begin_report {
        my ($self, $report) = @_;
        # etc.
    }
    sub count {
        my ($self, $report, $scope, $field, $period, $val) = @_;
        # etc.
    }
    # etc.
```

## DESCRIPTION

**Biblio::COUNTER::Processor** is an inheritable class that provides an intermediate interface to Biblio::COUNTER.  When used on its own, it does nothing; subclasses must define handlers for the various events (e.g., `"begin_report"` or `"count"`) that are triggered as a report is processed.

Event-handling methods (if defined) are invoked with the arguments documented in Biblio::COUNTER, except that an additional argument (the instance of the Biblio::COUNTER::Processor subclass) is prepended.

For a class that actually **does** something when events are triggered, see Biblio::COUNTER::Processor::Simple.

## METHODS

- **new**

  ```
      $processor = Biblio::COUNTER::Processor->new;
  ```

  Create a new processor.

- **run**(*$file*)

  ```
      $report = $processor->run($what);
  ```

  Process the given report.

  *$what* may be a file handle, the name of a file, or an instance of (a subclass of) Biblio::COUNTER::Report.

  A Biblio::COUNTER::Report object will be instantiated and its **process** method invoked; each time an event is triggered, a method with the event's name (e.g., `"begin_record"` or `"cant_fix"`) is invoked **if it is defined**.  Since this class doesn't define any such methods, the default behavior when an event is triggered is to do nothing.

- **ignore**(*@events*)

  ```
      $processor->ignore(qw/line input output/);
  ```

  Specify the events to ignore.  The various events are documented in Biblio::COUNTER.

## INHERITANCE

**Biblio::COUNTER::Processor** is designed to be inheritable; in fact, it doesn't do anything on its own (unless you count *ignoring events* as doing something).

## BUGS

There are no known bugs.  Please report bugs to the author via e-mail (see below).

## AUTHOR

Paul Hoffman (nkuitse AT cpan DOT org)

## COPYRIGHT

Copyright 2008 Paul M. Hoffman.

This is free software, and is made available under the same terms as Perl itself.

## SEE ALSO

Biblio::COUNTER

Biblio::COUNTER::Report

Biblio::COUNTER::Report::Processor::Simple
