---
name: "Biblio::COUNTER::Processor::Atomize"
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::Atomize"
---

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

break a COUNTER report into itsy pieces

## NAME

Biblio::COUNTER::Processor::Atomize - break a COUNTER report into itsy pieces

## SYNOPSIS

```
    use Biblio::COUNTER::Processor::Atomize;
    $processor = Biblio::COUNTER::Processor::Atomize->new;
    $report = $processor->run($file_or_filehandle);
```

## DESCRIPTION

**Biblio::COUNTER::Processor::Atomize** breaks a COUNTER report into tiny pieces (figuratively speaking) and executes a callback for each valid usage number it finds.

The callback function should look something like this:

```
    sub my_callback {
        my %data = @_;
        $title  = $data{title};
        $count  = $data{count};
        $metric = $data{metric};
        $period = $data{period};
        # etc.
    }
```

The following elements may appear in the hash passed to the callback function:

- **code**

  The short code that indicates the type of the report (e.g., `"JR1"` or `"DB3"`).

- **file**

  The name of the file containing the report.  Set to `"-"` if processing standard input.

- **processor**

  The Biblio::COUNTER::Processor::Atomize instance.

- **report**

  The instance of the appropriate subclass of Biblio::COUNTER::Report

- **period**

  A string of the form *YYYY-mm* denoting the period in question.

- **metric**

  The type of event counted (`"requests"`, `"sessions"`, `"searches"`, or `"turnaways"`).

- **count**

  The count itself.  The callback is **not** executed for a blank or invalid count.

- **platform**

  The platform on which the resource was provided.

- **title**

  The resource title.

- **publisher**

  The resource's publisher.  May be the empty string.

- **print\_issn** (journal reports only)

  The journal's print ISSN.

- **online\_issn** (journal reports only)

  The journal's online ISSN.

- **isbn** (book reports only)

  The book's ISBN.

## PUBLIC METHODS

- **new**(*%args*)

  ```
      $foo = Biblio::COUNTER::Processor::Atomize->new;
  ```

  *%args* is a list of (key, value) pairs.  The only key that means anything is **callback**; the value associated with it is a reference to the desired callback function.

  The desired callback function prints (to standard output) a single tab-delimited line for each datum, with a header.  Each line of output has the following elements, in the order listed:

  - **code**

    - **file**

    - **platform**

    - **period**

    - **metric**

    - **count**

    - **title**

    - **publisher**

    - **print\_issn** (journal reports only)

    - **online\_issn** (journal reports only)

    - **isbn** (book reports only)

    - **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.

## INHERITANCE

**Biblio::COUNTER::Processor::Atomize** is designed to be inheritable.

## 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
