Thread [Net::SSH2] File - Handler & While - Schleife - Bestimmten Wert in entfernter Datei suchen ? (8 answers)
Opened by YAPD at 2015-09-30 23:34

YAPD
 2015-09-30 23:34
#182453 #182453
User since
2015-09-20
146 Artikel
BenutzerIn

user image
Hallo Zusammen,

ich habe mal eine Frage zu meinem Script. Und zwar öffne ich im 1. Schritt eine lokale Datei ( Werte.txt ), in der immer ein Wert pro Zeile steht. In einer weiteren While Schleife innerhalb der While Schleife öffne ich nun über den SSH2 Befehl sftp(); eine Datei auf dem Server ( NeueWerte.txt ).
Ich lese also den 1. Wert aus der Datei Werte.txt & prüfe im Anschluss pro Zeile, ob dieser in der Datei Neue_Werte.txt vorkommt. Dann lese ich den 2. Wert Usw. ...

Hier das Script :

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
my $datei = "Werte.txt";

open ( "in" , "< $datei" ) || die $!;

while ( <in> )
{
# Hier passiert nichts Relevantes

# ----------------------------------------------------------
# Öffnung des File - Handles für PW - Datei

my $SFTP = $SSH2 -> sftp();
my $File_Handler = $SFTP -> open( '/home/YAPD/Neue_Werte.txt' ) or die;

print "Lese Datei ..." , "\n";

my $Zaehler_Vorkommnisse = 0;

while ( <$File_Handler> )
{
my $Charakter = "ZU SUCHENDER WERT";
my $Offsets = 0;

my $Ergebnis_Suche = index( $_ , $Charakter , $Offsets );

# --------------------------------------------------------

while ( $Ergebnis_Suche != -1 )
{
$Zaehler_Vorkommnisse++;

$Offsets = $Ergebnis_Suche + 1;
$Ergebnis_Suche = index( $_ , $Charakter , $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"; }
}

print "\n";
print "------------------------------------------------" , "\n";
print "\n";

close "in";


Das Script ist zwar so in Ordnung ( Oder Nicht ? ). Allerdings bricht es
alle Geschwindigkeitsrekorde, im Negativem. Umfasst die entfernte Datei, also Neue_Werte.txt 31 Zeilen, dauert die Prüfung gute 9 Sekunden pro Eintrag in der Datei Werte.txt. Ich denke dass die Combi aus While Schleife in While Schleife der Grund ist.

Habt ihr hier eine Idee ?

Vielen Dank & Viele Grüße
YAPD
Last edited: 2015-10-01 04:47:17 +0200 (CEST)
Yet Another Perl Developer

View full thread [Net::SSH2] File - Handler & While - Schleife - Bestimmten Wert in entfernter Datei suchen ?