|
|||||||||||||||||||||||||||
Hej Hm...
File::Find virker OK, med er der ingen anden måde at "gemme svaret", skal
man bruge en global variable?
cut&paste
========================================================
# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, $ImageSource);
foreach ( @ImageFileNames) {
"Now Processing", print $_, "\n";
}
sub wanted {
my ($dev,$ino,$mode,$nlink,$uid,$gid);
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-f _ &&
/^.*\.jpg\z/s &&
push( @ImageFileNames, $name);
}
========================================================
Anders Sønderberg Mortensen wrote:
> Ups, glemte lige at filtrere forkerte fil-suffixer fra. Det er tilføjet
> her under:
>
> On Sun, 14 Jul 2002, Anders Sønderberg Mortensen wrote:
>
>> sub find_jpg {
>> my ($dir, $array_ref) = @_;
>> local *DIR;
>>
>> opendir(DIR, $dir) or die $_;
>> while ($entry = readdir(DIR)) {
>> if (($entry eq "..") or ($entry == ".")) {
>> next;
>> }
>> $file = "$dir/$entry";
>> if (-d $file) {
>> find_jpg($file, $array_ref);
> } elsif ($entry =~ /\.jpg$/) {
>> push(@$array_ref, $file);
>> }
>> }
>> closedir(DIR);
>> }
>>
>> find_jpg($list = []);
>>
>> Held og lykke!
>>
>> Hilsen
>>
>> Anders Sønderberg Mortensen
>>
>>
>> On Sun, 14 Jul 2002, Lars H. wrote:
>>
>> > Hvordan laves en liste over alle *.jpg filer rekursivt. Svaret skal
>> > bruges som en liste, @files.
>> >
>> > Følgende er IKKE måden at gøre det på da det giver en scalar med det
>> > hele.
>> >
>> >
>> > $files = system("find /mnt/flash -name \"*.jpg\" ");
>> > print "$files";
>> >
>> >
>>
>>
|
||||||||||||||
|
||||||||||||||