NAME
perlvars - A command line utility for detecting unused Perl variables
VERSION
version 0.000005
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.