Hallo Zusammen,
ich habe nach dem Tipp von Gast42 mein Script insofern angepasst, dass
ich nun erst die gewünschte Datei von Server hole und dann die 2 Dateien
im File Handler öffne & prüfe ob der gesuchte Wert aus Datei 1 in Datei 2
vorhanden ist. Hier der entsprechende Teil des Scripts :
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
print "Lese PW - Datei ..." , "\n";
my $SFTP = $SSH2 -> sftp;
my $Remote_Verzeichnis = "/home/YAPD";
my $Lokales_Verzeichnis = "D:/Perl";
my $Remote_File = 'Werte.txt';
my $File_Handler;
$File_Handler = $SFTP -> open( $Remote_Verzeichnis . "/" . $Remote_File );
if ( defined( $File_Handler ) )
{
if ( open( LFH, "> $Lokales_Verzeichnis\\$Remote_File" ) )
{
my $myLine;
binmode( LFH );
while ( $myLine = <$File_Handler> )
{
printf( LFH "%s" , $myLine );
}
close( LFH );
}
else
{
printf( "Could not open local file '%s' for transfer\n" , $Remote_File );
}
}
else
{
printf( "Could not open remote file '%s' for transfer\n" , $Remote_File );
}
# -------------------------------------------------------------------------------
my $datei = "Neue_Werte.txt";
open ( "in" , "< $datei" ) || die $!;
while ( <in> )
{
my $Suchwert = $_;
chomp $Suchwert;
open ( "im" , "< $Remote_File" ) || die $!;
my $Zaehler_Vorkommnisse = 0;
while ( <im> )
{
my $Offsets = 0;
my $Ergebnis_Suche = index( $_ , $Suchwert , $Offsets );
# --------------------------------------------------------
while ( $Ergebnis_Suche != -1 )
{
$Zaehler_Vorkommnisse++;
$Offsets = $Ergebnis_Suche + 1;
$Ergebnis_Suche = index( $_ , $Suchwert , $Offsets );
}
}
if( $Zaehler_Vorkommnisse == 0 ) { print "Pruefung der Datei in Ordnung !" , "\n"; }
if( $Zaehler_Vorkommnisse > 0 ) { print "Der Wert ist bereits in der Datei !" , "\n"; }
close "im";
}
print "\n";
print "------------------------------------------------" , "\n";
print "\n";
close "in";
Dieser Code funktioniert sehr gut, nun dauert nur das Auslesen des Files eine Weile, der Vergleich der Zeilen dauert dafür aber nur ein Bruchteil einer Sekunde.
Eine Frage an die Coder : Gibt es noch eine schlankere Variante, wie ich
dies umsetzen kann ? Wäre nett zu wissen. Ich bin allerdings damit auch schon zufrieden.
Viele Grüße
YAPD
Yet Another Perl Developer