Leser: 28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
my @files = 1 .. 1_000; system "touch $_" for @files; opendir my $dh, '.' or die $!; my $first = readdir $dh; print "Sleeping...\n"; sleep 5; unlink for @files; my @exists; while ( my $file = readdir $dh ) { push @exists, $file; } closedir $dh or die $!; print "Count: ", scalar @exists + 1, "\n"; print "$first @exists\n";
1
2
3
4
sidburn@sid:~/perl/foo$ ./readdir.pl
Sleeping...
Count: 171
. .. 151 372 498 924 206 620 28 24 458 794 290 666 768 843 826 967 867 260 786 456 249 615 985 344 38 998 289 224 552 892 475 287 148 250 825 331 47 303 636 854 277 279 660 723 353 460 761 970 171 785 801 697 512 787 656 520 123 150 408 940 376 152 706 743 443 942 959 910 410 301 576 611 86 57 775 10 896 922 161 8 663 506 680 834 101 264 429 41 619 108 212 609 295 365 990 481 61 908 333 799 994 147 721 469 561 404 538 647 255 119 387 181 34 70 221 667 326 808 14 931 894 981 116 983 291 370 540 9 863 952 267 30 601 546 251 324 991 589 228 7 442 486 674 299 50 507 806 434 464 755 884 586 113 423 6 904 578 247 166 946 338 861 911 1 798 462 736 777 readdir.pl
1
2
3
4
sidburn@sid:/sidburn/test$ ./readdir.pl
Sleeping...
Count: 170
. .. readdir.pl 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
1 2 3 4 5 6 7 8 9 10
while ( my $file = readdir $dh ) { eval { open my $fh, '<', $file or die $!; ### tue etwas mit der datei close $fh or die $!; }; if ( $@ ) { warn "Fehler bei Bearbeitung der Datei $file: $!\n"; } }
Quoteich bin noch am überlegen wie ich dies genau umsetze, da ich eigentlich recht gern eine art fifo umsetzen wollte. allerdings habe ich die befürchtung das eine sortieren nach erstelldatum recht i/o bzw. cpu lastig werden wird (bei vielen files und ständigen neuen "nachschauen" nach neuen files)....
Quotewird denn wirklich garantiert das wenn ich die namen entsprechend benenne das ein readdir mir das alphabetisch sortiert? bin davon ausgegangen das es nichts sortiert und auf filesystem ebene auch nicht garantiert wird das es sortiert ist, ausser man sortiert es selber...
my @files = sort readdir $dh;
my @files = glob('.* *')