Schrift
[thread]5907[/thread]

Alle Dateien aus einem Verzeichnis auslesen

Leser: 4


<< >> 5 Einträge, 1 Seite
Arasiel
 2003-11-14 11:09
#71794 #71794
User since
2003-11-12
39 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hab ein Verzeichnis mit über 100 .init-Dateien.
Und jede .init-Datei hat in der ersten Zeile folgenden Aufbau:
Wert1, Wert2, Wert3, Wert4, ... ,WertX  (nach dem Komma kann man splitten)
Jede Datei hat eine unterschiedliche Anzahl von Werten.

Ich möchte nacheinander jede Datei öffnen, den Dateinamen und die ganzen Werte auslesen.
Wenn aus einer Datei alle Werte eingelesen wurden, soll sie geschlossen werden und die
nächste Datei geöffnet werden. Das soll sich solange Wiederholen, bis alle Dateien
durchgearbeitet wurden.

In eine andere Datei mit Namen Ergebnisse.txt sollen diese Werte dann im folgenden
Format gespeichert werden:
Datei "Dateiname".init hat folgende Werte als Inhalt: "Wert1", "Wert2", ..., "WertX"
...

Das ist doch bestimmt auch irgendwie möglich oder?
Ich bin für jede Hilfe dankbar!

Gruss!
renee
 2003-11-14 11:15
#71795 #71795
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (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;
use diagnostics;

my %hash = ();
my @files = <./Pfad/*.init>;
# für jede .init-Datei
foreach my $file(@files){
 open(FILE,"<$file") or print $!;
 my $ersteZeile = <FILE>;
 close FILE;
 my @local_array = split(/,/,$ersteZeile);
 $hash{$file} = [@local_array];
}

#schreibe die Ergebnisdatei
open(WRITE,">ergebnis.txt") or print $!;
foreach(sort(keys(%hash))){
 print WRITE $_," hat folgende Werte:\t@{$hash{$_}}\n";
}
close WRITE;

allerdings ungetestet!!\n\n

<!--EDIT|renee|1068802349-->
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/
Arasiel
 2003-11-14 11:26
#71796 #71796
User since
2003-11-12
39 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für deine Hilfe.
Eine Kleinigkeit hast du vergessen, aber dann funktioniert es!
In dieser Zeile hast du das Komma vor $ersteZeile vergessen:
my @local_array = split(/,/,$ersteZeile);

Mach jetzt noch Stichproben, ob wirklich alle Einträge der Dateien übernommen wurden.

Gruss

:D
renee
 2003-11-14 11:32
#71797 #71797
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Danke, habe das Komma noch eingefügt... ;)
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/
havi
 2003-11-14 12:03
#71798 #71798
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Alternativ Vorschlag:

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

use warnings;
use strict;

my $Verzeichnis = "d:\\MeinTest\\";

opendir(DIR, $Verzeichnis) or die $!;
my @files = readdir(DIR);
closedir(DIR) or die $!;

open(AUS, ">Ergebnisse.txt") or die $!;

foreach (@files) {
if ($_ =~ /init$/) {
my $file = $_;
open(FIL, $Verzeichnis.'/'.$_) or die $!;
while(<FIL>) {
print AUS "Dateiname: $file hat folgende Werte als Inhalt: $_";
} # while
} # if
close(FIL);
} # foreach

close(AUS) or die $!;

print "\nFertig.\n";

1;


Gruss
<< >> 5 Einträge, 1 Seite



View all threads created 2003-11-14 11:09.