in reply to How do I detect what modules are not being used?

How about writing a small script that starts like this:
package moduleTest; eval "$ARGV[0]";
(The argument would be the "use Whatever qw(umm)" line.) Then the script could go on to check the package's symbol table for things that have been exported by the module, and print the results.

I know this is terribly inelegant, but it seems like a simple way to get what you want.

-Joe

Replies are listed 'Best First'.
Re^2: How do I detect what modules are not being used?
by Limbic~Region (Chancellor) on Apr 07, 2005 at 12:58 UTC
    blahblahblah,
    know this is terribly inelegant, but it seems like a simple way to get what you want

    I have been staring at the original question and the answers in this thread and am failing to see how most of them are relevant. The question is not what modules are being imported, the question is of the many modules being imported, which ones are really being used. This question is presumably being asked so the ones not being used can be removed (cleaned up per the boss).

    Cheers - L~R

      I should have been more clear, but I was really only replying to the last part of the original post:

      ...
      &NET::SSH::sshopen2()

      And I could grep the expanded output to find the packages that ARE used and do my own bookeeping, but Deparse does not fully-qualify function calls.

      The problem here was that you can easily grep your own code for Foo::x() to find uses of Foo's x method, but if your code just calls x(), you need to know that x is a method of Foo. If you can find out what all the methods of Foo are, then you can grep for non-fully-qualified calls to those methods in your code and flag those parts of your code for review.

      -Joe

      Update: I just read some more of the replies, and of course I agree that there's no way to automate this task and get it 100% right. But I think that a simple solution like this could save some effort by categorizing each script/module as "definitely used" or "probably not used". Then you'd want to manually review the "probably not used" cases.