Thursday, May 3, 2007

file list in perl

#!/usr/bin/perl

use strict;
use warnings;

use File::Slurp;
use File::Find;

my $dir = shift;
defined $dir or die "usage: subscan.pl [DIR]\n";

find( \&show_subs, $dir );

sub show_subs {

if ( -d ) {

if ( $_ eq '.svn' ) {

# don't traverse into subversion related directories
$File::Find::prune = 1;
return;
}

# for directories, only print path
print "$File::Find::name\n";
return;
}

-f or return; # if not a file
/\.p(m|lx?)$/ or return; # if not the right extension

my $perl = read_file( $_ );

my @subs = $perl =~ /^\s*sub\s+(\S+)/gm;
@subs or return;

print " $_\n", map { " $_\n" } @subs;
}

No comments: