use warnings; use strict; use File::Find; use File::Spec::Functions qw(rel2abs); my $root = rel2abs (shift || '.'); my @extList = @ARGV; @extList = ('pl', 'pm') if ! exists $extList[0]; my %exts; @exts{@extList} = (); my $lines = 0; my $files = 0; find (\&count, $root); print "$lines lines, $files files"; sub count { my $name = $File::Find::name; return if -d $name; my ($ext) = $name =~ /\.([^.]*)$/; return if ! defined $ext or ! exists $exts{$ext}; return if ! open inFile, '<', $name; ++$files; ++$lines while (); close inFile; }