in reply to Easiest way to find all the Perl Modules on a system?

perl -e 'while (<@INC>) { while (<$_/*.pm>) { print "$_\n"; } }'

Regards,
Edward

Replies are listed 'Best First'.
Re^2: Easiest way to find all the Perl Modules on a system?
by Joost (Canon) on Dec 14, 2006 at 13:48 UTC
Re^2: Easiest way to find all the Perl Modules on a system?
by Limbic~Region (Chancellor) on Dec 14, 2006 at 15:29 UTC
    monkfan,
    Not only does your code not do what was asked for, I think it is broken. I believe both uses of glob in your while loop lead to infinite loops. I can't be sure as I don't have access to perl currently. Update: tye informed me this does work. This is because glob in scalar context doesn't create an iterator, it is an iterator. After re-reading I/O Operators in perlop I realized I was mistaken. I would still recommend spelling out glob over angle brackets to avoid confusion with readline.

    Update 2: I am not sure why, but this still seems odd to me. Perhaps it is because I have less than 30 hours to wait before starting a 3 week vacation. I wonder how the following two examples would behave (i.e. how they are scoped):

    while (my $file = next_file()) { print "$file\n"; } sub next_file { <*> }
    while (my $file = next_file()) { print "$file\n"; my $next = <*>; last if ! defined $next; print "$next\n"; } sub next_file { <*> }

    Cheers - L~R