perlvars - A command line utility for detecting unused Perl variables
version 0.000004
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
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.
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:
@INC
./lib
perlvars lib/Foo/Bar.pm cd lib && PERL5OPT="-I." perlvars Foo/Bar.pm
The code in this module is largely copied directly from Code::TidyAll::Plugin::Test::Vars.
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.
Olaf Alders <olaf@wundercounter.com>
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.
To install App::perlvars, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::perlvars
CPAN shell
perl -MCPAN -e shell install App::perlvars
For more information on module installation, please visit the detailed CPAN module installation guide.