NAME

perlvars - A command line utility for detecting unused Perl variables

VERSION

version 0.000006

SYNOPSIS

Detect unused variables in Perl code.

perlvars lib/Foo.pm lib/Foo/Bar.pm

PERL5OPT="-I." perlvars Foo.pm Baz.pm

You can also ignore arbitrary variables on a per-package basis, using an ignore file.

perlvars --ignore-file ignore-list.txt lib/Foo.pm lib/Foo/Bar.pm

See the documentation for App::perlvars for the format of the ignore file.

If you'd like to check every .pm file in your lib directory, you can try something like:

find lib | grep pm$ | xargs perlvars

DESCRIPTION

This script (which is based heavily on the code in Code::TidyAll::Plugin::Test::Vars) is a wrapper around Test::Vars, which tries to find unused variables in your Perl code. Please note that since Test::Vars only finds unused variables contained within packages, code which does not have an explicit package name will not be checked.

CAVEATS

As noted above, there are some serious limitations to this script, due to the way that Test::Vars works. You're strongly encouraged to consider using Perl::Critic::Policy::Variables::ProhibitUnusedVarsStricter if that's a possibility for you.

Your code needs an explicit package name.

package Foo::Bar;
...
1;

The package name needs to match the file name, so the package above needs to be in a file named Foo/Bar.pm.

The package needs be in @INC or in a ./lib folder. This means that for the example above, either of these should work:

perlvars lib/Foo/Bar.pm

cd lib && PERL5OPT="-I." perlvars Foo/Bar.pm

ACKNOWLEDGEMENTS

The code in this module is largely copied directly from Code::TidyAll::Plugin::Test::Vars.

SEE ALSO

You may also wish to use Perl::Critic::Policy::Variables::ProhibitUnusedVarsStricter which can find some cases which Test::Vars is not able to detect. It also does not require the code to be inside a package.

AUTHOR

Olaf Alders <olaf@wundercounter.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by MaxMind, Inc.

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