Thread Dateien auslesen, nach Wort suchen und neu abspeichern funktioniert nicht ganz... (3 answers)
Opened by New at 2013-07-25 09:14

New
 2013-07-25 09:14
#169115 #169115
User since
2013-07-25
8 Artikel
BenutzerIn
[default_avatar]
Hallo

Ich habe folgendes Programm geschrieben und dies hat folgenden Fehler (in Kommentar am Anfang beschrieben):

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

# 24.07.2013
# Test-Datei: öffnen der .txt Dateien und suchen nach .SUBCKT, diese Dateien dann in neue Datei speichern
# Funktioniert noch nicht: Dateien ohne .SUBCKT raussuchen --> Fehler: Für jede Zeile ist ein Array Element angelegt, und speichert somit für jede
# Zeile ohne .SUBCKT den Inhalt der Datei in die neue Datei

use strict;
use warnings;
use File::Find;
use CGI::Carp qw(fatalsToBrowser);

# Variablen
my $Bauteil;
my $Bauteil_found = 1;
my $file;
my $Subckt;


# Arrays
my @Dioden;
my @files;
my @Subckt;
my @Bauteil;

# **********************************************************
# Liest die Dateinamen aus und schreibt sie in @files:
opendir(DIR, ".") or die "Fehler beim Öffnen des Ordners.\n";
@files = readdir(DIR);
foreach $file (sort @files)
{
print "$file\n"; # Ausgabe der eingelesenen Dateinamen im Konsolenfenster
}
closedir(DIR);

# **********************************************************
# Überprüft, ob eine Datei mit .txt hinten in dem Ordner vorhanden ist
foreach (@files)
{
if ($_ =~ /.*.txt$/i)
{
$Bauteil = $_;
$Bauteil_found = 0;


# **********************************************************
# Wenn keine .txt Datei vorhanden oder Fehler beim Öffnen dieser: Error Meldung
if ($Bauteil_found)
{
open (sd_err, ">Error.txt");
print sd_err "Error" ;
close (sd_err);
die "\n\nError: Keine Testdateien vorhanden. Die zu verarbeiteten Dateien müssen mit .txt enden!\n\n";
};

# Wenn doch eine oder mehrere .txt Dateien vorhanden sind
# Schreibe die Daten in das Array "@Bauteil"
open (BAUTEIL,"<$Bauteil");
@Bauteil= <BAUTEIL>;
close BAUTEIL;
# **********************************************************
#print @Bauteil; # Gibt die Daten vom Array @Bauteil auf dem Konsolenfenster aus
# In den Arrays sind die Daten Zeilenweise hinterlegt, also für jede Zeile ein Array!!

foreach (@Bauteil)
{
if ($_ =~ /^\.SUBCKT\b/i) #Erklärung Reguläre Ausdrücke: ^->Beginnt am Anfang einer Zeile, \-> für den . ,
{ #\b-> Wortbegrenzung nach hinten, i-> Groß-und Kleinschreibung wird nicht berücksichtigt
open (ZIELD, ">>SUBCKT.txt");
print ZIELD @Bauteil;
print ZIELD "\n\n\n";
close(ZIELD);
}
else
{
open (ZIELD1, ">>MODEL.txt");
print ZIELD1 @Bauteil;
print ZIELD1 "\n\n\n";
close(ZIELD1);
}
}

} # erste If Schleife schließen
} # foreach Schleife schließen


Im Moment wir mir also eine MODEL.txt Datei ausgegeben, wo der Inhalt der vorherigen .txt Dateien so oft eingetragen ist, wie Zeilen vorhanden sind, wo kein .SUBCKT steht. Mein Ziel ist es aber einfach nur, die .txt Dateien quasi zu sortieren nach mit .SUBCKT im Inhalt und ohne und diese dann in zwei neue Dateien zu speichern. Hoffe mir kann jemand nen Tip geben. Danke
Gruß
Last edited: 2013-07-25 09:24:59 +0200 (CEST)

View full thread Dateien auslesen, nach Wort suchen und neu abspeichern funktioniert nicht ganz...