---
name: "Perl::Metrics::Simple"
section: "3pm"
platform: "linux"
package: "libperl-metrics-simple-perl"
version: "1.0.3-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Metrics::Simple"
---

# Perl::Metrics::Simple(3pm)

Count packages, subs, lines, etc. of many files.

## NAME

Perl::Metrics::Simple - Count packages, subs, lines, etc. of many files.

## SYNOPSIS

```
  use Perl::Metrics::Simple;
  my $analyzer = Perl::Metrics::Simple->new;
  my $analysis = $analyzer->analyze_files(@paths, @refs_to_file_contents);
  $file_count    = $analysis->file_count;
  $package_count = $analysis->package_count;
  $sub_count     = $analysis->sub_count;
  $lines         = $analysis->lines;
  $main_stats    = $analysis->main_stats;
  $file_stats    = $analysis->file_stats;
```

## DESCRIPTION

**Perl::Metrics::Simple** provides just enough methods to run static analysis of one or many Perl files and obtain a few metrics: packages, subroutines, lines of code, and an approximation of cyclomatic (mccabe) complexity for the subroutines and the "main" portion of the code.

**Perl::Metrics::Simple** is far simpler than Perl::Metrics.

Installs a script called **countperl**.

## USAGE

See the *countperl* script (included with this distribution) for a simple example of usage.

## CLASS METHODS

### new

Takes no arguments and returns a new Perl::Metrics::Simple object.

### is\_perl\_file

Takes a path and returns true if the target is a Perl file.

## OBJECT METHODS

### analyze\_files( @paths, @refs\_to\_file\_contents )

Takes an array of files and or directory paths, and/or SCALAR refs to file contents and returns an Perl::Metrics::Simple::Analysis object.

### find\_files( @directories\_and\_files )

Uses *list\_perl\_files* to find all the readable Perl files and returns a reference to a (possibly empty) list of paths.

### list\_perl\_files

Takes a list of one or more paths and returns an alphabetically sorted list of only the perl files. Uses *is\_perl\_file* so may throw an exception if a file is unreadable.

### is\_perl\_file($path)

Takes a path to a file and returns true if the file appears to be a Perl file, otherwise returns false.

If the file name does not match any of `@Perl::Metrics::Simple::PERL_FILE_SUFFIXES` then the file is opened for reading and the first line examined for a a Perl 'shebang' line. An exception is thrown if the file cannot be opened in this case.

### should\_be\_skipped($path)

Returns true if the *path* should be skipped when looking for Perl files. Currently skips  *.svn*, *CVS*, and *\_darcs* directories.

## BUGS AND LIMITATIONS

See: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Perl-Metrics-Simple

## SUPPORT

Via CPAN:

### Disussion Forum

http://www.cpanforum.com/dist/Perl-Metrics-Simple

### Bug Reports

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Perl-Metrics-Simple

## AUTHOR

```
    Matisse Enzer
    CPAN ID: MATISSE
    Eigenstate Consulting, LLC
    matisse@eigenstate.net
    http://www.eigenstate.net/
```

## LICENSE AND COPYRIGHT

Copyright (c) 2006-2021 by Eigenstate Consulting, LLC.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

## SEE ALSO

- The *countperl* script included with this distribution.

  - PPI

  - Perl::Critic

  - Perl::Metrics

  - http://en.wikipedia.org/wiki/Cyclomatic\_complexity
