use strict; use warnings; #### sub read_dir { my $dir = shift; if ( opendir( DIR, $dir ) ) { #### if ( whatever ) { # ... } else { # ... } #### my @tmp = readdir(DIR); my @files = map { "$dir/$_" } grep { !/^\.{1,2}$/ && -f "$dir/$_" } @tmp; my @dirs = map { "$dir/$_" } grep { !/^\.{1,2}$/ && -d "$dir/$_" } @tmp; #### my @tmp = grep !/^\.{1,2}$/, readdir(DIR); #### my (@files,@dirs); for (readdir DIR) { next if $_ eq '.' or $_ eq '..'; $_="$dir/$_"; push @files, $_ if -f; push @dirs, $_ if -d _; } #### closedir( DIR ); #### sub glob_files { my ($dir, $recurse) = @_; #### if (@$files) { push @files, @$files; } #### push @files, @$files; #### recursion: { last unless $recurse; #### while (@$dirs) { my $d = shift (@$dirs); #### for (@$dirs) { #### my @f = glob_files("$d", 1); #### }else{ return; } } #### foreach $file (@files) { open FH, $file or die "Error opening [$file]: $!\n"; #### next unless ( -s $file > 9 ); #### read(FH, $data, 10) or die "Error reading from [$file]: $!\n"; #### if ( $data =~ /^BM/ ) { $type = 'BMP'; }elsif ( $data =~ /^GIF8[79]a/) { $type = 'GIF'; }elsif ( $data =~ /^\xFF\xD8/ ) { $type = 'JPG'; }else { $type = undef; } #### return @images if ( scalar (@images) ); return; #### return @images; #### my (@files, @images); my $recurse = 1; #### @files = glob_files($dir, $recurse); @images = find_images(@files);