---
name: "Perl::Critic::Pulp::Utils"
section: "3pm"
platform: "linux"
package: "libperl-critic-pulp-perl"
version: "99-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Pulp::Utils"
---

# Perl::Critic::Pulp::Utils(3pm)

shared helper code for the Pulp perlcritic add-on

## NAME

Perl::Critic::Pulp::Utils - shared helper code for the Pulp perlcritic add-on

## SYNOPSIS

```
 use Perl::Critic::Pulp::Utils;
```

## DESCRIPTION

This is a bit of a grab bag, but works as far as it goes.

## FUNCTIONS

### Element Functions

- "$pkgelem = Perl::Critic::Pulp::Utils::elem\_package ($elem)"

  `$elem` is a `"PPI::Element"`.  Return the `"PPI::Statement::Package"` containing `$elem`, or `"undef"` if `$elem` is not in the scope of any package statement.

  The search upwards begins with the element preceding `$elem`, so if `$elem` itself is a `"PPI::Statement::Package"` then that's not the one returned, instead its containing package.

- "$bool = Perl::Critic::Pulp::Utils::elem\_in\_BEGIN ($elem)"

  Return true if `$elem` (a `"PPI::Element"`) is within a `"BEGIN"` block (ie. a `"PPI::Statement::Scheduled"` of type "BEGIN").

- "$bool = Perl::Critic::Pulp::Utils::elem\_is\_comma\_operator ($elem)"

  Return true if `$elem` (a `"PPI::Element"`) is a comma operator (`"PPI::Token::Operator"`), either "," or "=\>'.

### Policy Parameter Functions

- "Perl::Critic::Pulp::Utils::parameter\_parse\_version ($self, $parameter, $str)"

  This is designed for use as the `"parser"` field of a policy's `"supported_parameters"` entry for a parameter which is a version number.

  ```
      { name        => 'above_version',
        description => 'Check only above this version of Perl.',
        behavior    => 'string',
        parser      => \&Perl::Critic::Pulp::Utils::parameter_parse_version,
      }
  ```

  `$str` is parsed with the `"version.pm"` module.  If valid then the parameter is set with `"$self->__set_parameter_value"` to the resulting `"version"` object (so for example field `$self`-\>{'\_above\_version'}).  If invalid then an exception is thrown per `"$self->throw_parameter_value_exception"`.

## EXPORTS

Nothing is exported by default, but the functions can be requested in usual `"Exporter"` style,

```
    use Perl::Critic::Pulp::Utils 'elem_in_BEGIN';
    if (elem_in_BEGIN($elem)) {
      # ...
    }
```

There's no `":all"` tag since this module is meant as a grab-bag of functions and importing as-yet unknown things would be asking for name clashes.

## SEE ALSO

Perl::Critic::Pulp, Perl::Critic, PPI

## HOME PAGE

\<http://user42.tuxfamily.org/perl-critic-pulp/index.html\>

## COPYRIGHT

Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2021 Kevin Ryde

Perl-Critic-Pulp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

Perl-Critic-Pulp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Perl-Critic-Pulp.  If not, see \<http://www.gnu.org/licenses/\>.
