Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use Modern::Perl '2009'; # Enable Perl 5.10 features
- use strict; # Included so that perlcritic does not complain
- use warnings; # ditto
- use 5.010; # Only works under Perl 5.10 and later
- use autodie qw( :all ); # Make system functions either succeed or die
- use strictures 2; # Turn on strict and make most warnings fatal
- use English;
- # Determine the list of module names
- my @module_names;
- foreach my $inc_dir (@INC) {
- my @file_names;
- eval {
- @file_names = `find $inc_dir -name '*.pm' 2>/dev/null`;
- };
- continue if ($EVAL_ERROR);
- foreach my $found (@file_names) {
- chomp $found; # remove the trailing newline
- $found =~ s{ # substitute...
- \A $inc_dir # ...a beginning dir name
- }
- {}xms; # replacing it with nothing
- $found =~ s{ # substitute...
- \.pm \z # ... an ending .pm
- }
- {}xms; # replacing it with nothing
- $found =~ s{ # substitute...
- / # ... each slash (/)
- }
- {::}gxms; # replacing it with ::
- $found =~ s{ # substitute...
- \A :: # ... a beginning ::
- }
- {}xms; # replacing it with nothing
- push @module_names, $found; # and add to the module names list
- }
- }
- # Finally, print a lexicographically sorted list of the module names
- for my $module_name ( sort @module_names ) {
- say $module_name;
- }
- # vim: set filetype=perl smartindent autoindent smarttab expandtab tabstop=4 softtabstop=4 shiftwidth=4 autoread
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement