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);