Frage zu readdir+push
am 03.10.2007 09:32:31 von guba
Hallo,
kann mir jemand sagen, warum code1 funktioniert, aber der
zusammengefasste code2 nicht?
$TempShapes_folder ist etwas wie 'C:.../TempShapes/' .
Danke für Hinweise
Guenter
code1:
opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
@File_list_TempShapes =3D grep(/\.png$/, readdir(DIR));
closedir(DIR);
opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
@File_list_TempShapes2 =3D grep(/\.PNG$/, readdir(DIR));
closedir(DIR);
push(@File_list_TempShapes, @File_list_TempShapes2);
opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
@File_list_TempShapes3 =3D grep(/\.jpg$/, readdir(DIR));
closedir(DIR);
push(@File_list_TempShapes, @File_list_TempShapes3);
opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
@File_list_TempShapes4 =3D grep(/\.JPG$/, readdir(DIR));
closedir(DIR);
push(@File_list_TempShapes, @File_list_TempShapes4);
code2:
opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
@File_list_TempShapes =3D grep(/\.png$/, readdir(DIR));
@File_list_TempShapes2 =3D grep(/\.PNG$/, readdir(DIR));
@File_list_TempShapes3 =3D grep(/\.jpg$/, readdir(DIR));
@File_list_TempShapes4 =3D grep(/\.JPG$/, readdir(DIR));
closedir(DIR);
push(@File_list_TempShapes, @File_list_TempShapes2,
@File_list_TempShapes3, @File_list_TempShapes4);
Re: Frage zu readdir+push
am 03.10.2007 09:37:49 von Bjoern Hoehrmann
* guba@vi-anec.de wrote in de.comp.lang.perl.misc:
>kann mir jemand sagen, warum code1 funktioniert, aber der
>zusammengefasste code2 nicht?
>opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
>@File_list_TempShapes = grep(/\.png$/, readdir(DIR));
>@File_list_TempShapes2 = grep(/\.PNG$/, readdir(DIR));
Weil readdir nur die verbleibenden Einträge zurückliefert, und nichts
falls es keine Einträge mehr gibt. In der ersten Version umgehst du das,
weil du opendir/closedir wiederholt aufrufst, hier jedoch nicht. Siehe
% perldoc -f readdir
für die Dokumentation von readdir.
--
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/
Re: Frage zu readdir+push
am 03.10.2007 22:06:32 von David Haller
guba@vi-anec.de wrote:
> code2:
>
> opendir(DIR, "$TempShapes_folder") || die "folder not found: $!";
> @File_list_TempShapes = grep(/\.png$/, readdir(DIR));
> @File_list_TempShapes2 = grep(/\.PNG$/, readdir(DIR));
> @File_list_TempShapes3 = grep(/\.jpg$/, readdir(DIR));
> @File_list_TempShapes4 = grep(/\.JPG$/, readdir(DIR));
> closedir(DIR);
> push(@File_list_TempShapes, @File_list_TempShapes2,
> @File_list_TempShapes3, @File_list_TempShapes4);
perldoc -f rewinddir
Ich würde dir aber folgendes empfehlen:
opendir(DIR, "$TempShapes_folder")
or die "folder '$TempShapes_folder' not found: $!";
@File_list_TempShapes = grep(/(?:\.png|jpg)$/i, readdir(DIR));
closedir(DIR);
HTH,
-dnh
--
I didn't know it was impossible when I did it.
Re: Frage zu readdir+push
am 04.10.2007 08:08:22 von Ferry Bolhar
David Haller:
> @File_list_TempShapes = grep(/(?:\.png|jpg)$/i, readdir(DIR));
Das findet auch Dateien, die z.B. mit "xxxjpg" (ohne Punkt) enden.
Daher besser
@File_list_TempShapes = grep /\.(?:png|jpg)$/i, readdir DIR;
Im Übrigen kann der OP seine Gründe gehabt haben, die jeweiligen
Sucherergebnisse in unterschiedlichen Arrays abzulegen (sonst hätte
er ja alle gleich in ein Array push-en können).
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at