Hallo,
habe mal wieder ein kleines Verständnisproblem.
Folgende Situation. In der einen Datei ist folgender Inhalt
xxx12345678irgend ein Text der beliebig lang sein kann
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
xxx23456789wieder ein Text der beliebig lang sein kann aber in einer Zeile ist
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
xxx34567890neuer Text mit x zeichen in der Zeile
TextTextTextTextTextTextTextTextTextTextText
TextTextTextTextTextTextTextTextTextTextText
Die Datei geht immer so weiter.
In einer zweiten Datei habe ich folgende Inhalt.
23456789
96325874
88554466
77663311
34567890
99999999
Mein Ziel ist es, die einzelnen Nummern z.b. 12345678 in der ersten Datei zu finden. Sollten diese nicht gefunden werden, soll die Zeile mit der Nummer und alle folgenden bis zu der nächsten Zeile in der er die Nummer findet ausgegeben werden.
Um mein Ziel zu erreichen habe ich folgendes Miniscript erstellt.
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
my $dep_arc_file = "C:\\Perl\\scripts\\test.csv";
my $dia_ert_file = "C:\\Perl\\scripts\\D925007";
my @arc = ();
my @ert = ();
open(ARC, $dep_arc_file ) || die "Can not open file $dep_arc_file\n";
while (<ARC>)
{
if (! /^Zeilenueberschrift/)
{
chomp;
push (@arc, $_);
}
}
close(ARC);
open(DIA, $dia_ert_file) || die "Can not open file $dia_ert_file\n";
while (<DIA>)
{
chomp;
push (@ert, $_);
}
close(DIA);
foreach my $line (@ert)
{
my $found = 0;
my $rest = 1;
if ( $line =~ /^xxx(\d{8})/ )
{
foreach my $tmp (@arc)
{
if ($tmp eq $1)
{
$found = 1;
$rest = 2;
}
}
}
if (( $found ne 1 ) && ( $rest eq 1 ))
{
print $line."\n";
}
}
Mein Problem ist nun, das ich entweder einige Zeilen doppelt ausgegeben bekomme oder aber das ich die folgende Zeilen nach der Zeile mit dem Suchmuster nicht ausgegeben bekomme.
Könnte mir evtl. jemand eine Tipp geben, was ich falsch mache.