Thread Dateien mit opendir gruppiert einlesen
(4 answers)
Opened by MarkusH at 2016-10-06 21:49
Wenn readdir($dh) am Ende angekommen ist, bringen weitere Aufrufe erstmal nix. Ende ist Ende. Aber Du könntest mit perlfunc rewinddir den Dirhandle auf Anfang zurücksetzen und dann wieder loslegen.
Oder Du machst (anstatt das Verzeichnis mehrmals wiederholt komplett auszulesen) die Zuordnung nach Erweiterung in einem Lese-Abwasch, z.B. (ungetestet): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #! /usr/bin/env perl use strict; use warnings; use 5.010; use Data::Dumper; my $path = '/path/to/dir'; my %files_by_ext; opendir my $dh, $path or die "opendir($path) failed: $!"; for my $entry ( readdir $dh ) { next if $entry =~ m/^\.\.?$/; my $ext = ( split m/\./, $entry )[-1]; next unless $ext; # push filename to HoA, key is filename's extension push @{ $files_by_ext{$ext} }, $entry; } closedir $dh; # check hash-of-arrays say Dumper \%files_by_ext; __END__ Last edited: 2016-10-06 23:46:07 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |