Skip to content

Instantly share code, notes, and snippets.

@Songmu
Created December 21, 2011 11:32
Show Gist options
  • Save Songmu/1505706 to your computer and use it in GitHub Desktop.
Save Songmu/1505706 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.12.0;
use Path::Class;
use Getopt::Long;
use Pod::Usage;
my $base_dir = dir('./');
my %modules;
my $process = sub {
my $entry = shift;
return unless -f $entry;
return unless $entry =~ /\.(?:t|p(?:m|l))$/;
my @lines = $entry->slurp(iomode => '<:utf8');
for my $line (@lines) {
my ($module) = $line =~ /^\s*use\s+((?:[A-Z][a-zA-Z0-9]*)(?:::[a-zA-Z][a-zA-Z0-9]*)*)/;
$modules{$module} = 1 if $module;
}
};
my $walker;
$walker = sub {
my ($dir, $sub) = @_;
for my $entry ($dir->children){
$walker->($entry, $process) if -d $entry;
$sub->($entry);
}
};
$walker->($base_dir, $process);
say for sort keys %modules;
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment