Thread Dateien mit opendir gruppiert einlesen (4 answers)
Opened by MarkusH at 2016-10-06 21:49

Linuxer
 2016-10-06 23:43
#185470 #185470
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Wenn readdir($dh) am Ende angekommen ist, bringen weitere Aufrufe erstmal nix. Ende ist Ende. Aber Du könntest mit Perldoc: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!

View full thread Dateien mit opendir gruppiert einlesen