#!/usr/bin/env perl # modpods - print out all module pod paths # # this is a perl program not a shell script # so that we can use the correct perl system $^X, "-S", "pminst", "-l"; __END__ =head1 NAME modpods - print out paths for the standard modules =head1 DESCRIPTION This program outputs the paths to all installed modules on your systems. This includes both the standard modules (which the I command produces) and the site-specific ones (which the I command produces). This is just a front-end for calling I, supplied to make it more obvious what it does. =head1 EXAMPLE This finds all the modules whose documentation mentions destructors, and cats it out at you. $ podgrep -i destructor `modpods` =head1 /usr/local/devperl/lib/5.00554/i686-linux/DB_File.pm chunk 371 Having read L you will probably have already guessed that the error is caused by the extra copy of the tied object stored in C<$X>. If you haven't, then the problem boils down to the fact that the B destructor, DESTROY, will not be called until I references to the tied object are destroyed. Both the tied variable, C<%x>, and C<$X> above hold a reference to the object. The call to untie() will destroy the first, but C<$X> still holds a valid reference, so the destructor will not get called and the database file F will remain open. The fact that Berkeley DB then reports the attempt to open a database that is alreday open via the catch-all "Invalid argument" doesn't help. =head1 /usr/local/devperl/lib/5.00554/Tie/Array.pm chunk 40 Normal object destructor method. =head1 SEE ALSO podgrep(1), modpods(1), pods(1), sitepods(1), podpath(1), and stdpod(1). =head1 AUTHORS and COPYRIGHTS Copyright (C) 1999 Tom Christiansen. Copyright (C) 2006-2008 Mark Leighton Fisher. This is free software; you can redistribute it and/or modify it under the terms of either: (a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or (b) the Perl "Artistic License". (This is the Perl 5 licensing scheme.) Please note this is a change from the original pmtools-1.00 (still available on CPAN), as pmtools-1.00 were licensed only under the Perl "Artistic License".