#!/usr/bin/perl use strict; use warnings; open my $LOG, '>', "$0.log"; my $startdir = $ARGV[0] || '.'; push my @dirs, $startdir; while (my $dir = pop @dirs) { opendir DIR, $dir; my @files = grep !/^\.\.?$/, readdir DIR; closedir DIR; foreach my $file (@files) { my $fullname = "$dir/$file"; $fullname = $file if ( $dir eq "/" ); if ( -d $fullname ) { push @dirs, $fullname; next; } if ( -f $fullname ) { if ( $file =~ /\.dat$/i ) { print $LOG $fullname . "\n"; } } } } close $LOG;