Thread Files nach bestimmten Schema schreiben (4 answers)
Opened by Gast at 2008-06-18 14:15

renee
 2008-06-19 01:39
#111249 #111249
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du arbeitest mit Schleifen, wo keine Schleife notwendig ist. Beispiel:

Code (perl): (dl )
1
2
3
4
foreach $file (glob("files/*.txt"))
{
push(@found,$file);
}


Warum nicht einfach
Code (perl): (dl )
my @found = glob "files/*.txt";
?

Was Dein Fehler ist: Du berechnest nur ein einziges Mal die Zufallszahl $random. Dadurch beschreibst Du immer wieder die selbe Datei. Dadurch wird keine neue Datei erstellt und so bleibst Du immer bei genau einer neuen Datei!!

Warum verwendest Du so viele globs? Gibt es andere Programme, die die Dateien/Verzeichnisse erstellen können?

Wenn dieses Programm das einzige Programm ist, was an den Dateien und Verzeichnissen arbeitet, dann würde ich das so (ungefähr) machen:

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
#!/usr/bin/perl

use strict;
use warnings;

my @files = glob "files/*.txt";

my $counter = 0;
my $dir = 1;

for my $file ( @files ){
    if( $counter++ % 5 == 0 ){
        $dir++;
    }

    mkdir "suche/$dir" unless -e "suche/$dir";
    my $random = int rand 999999;

    open my $fh, '>', "suche/$dir/$random$file" or die $!;
    print $fh "DATEI";
    close $fh;
}
(ungetestet)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Files nach bestimmten Schema schreiben