User since
2005-07-06
84
Artikel
BenutzerIn
Hi habe ein kleines Problem. Hänge schon etwas fest. Problem ist ich möchte eine einfache Prüfroutine ( sub existsFileInDirectory) auslagern in eine Subroutine. Leider funzt das nicht.
Hier der Code:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#####################################################################################################################
# 1 Block #reset_QcDemoPJ.log
sub DateiCheck
{
my $DateiCheck = 0;
# Hier wird das verzeichnis geöffnet und geprüft ob gesuchte Datei im Verzeichnis liegt.
my $datei;
####Hier soll die Subroutine das Ergebnis übergeben####
if (existsFileInDirectory)
{
print "Datei gefunden";
}
else
{
print "Datei nicht gefunden";
}
#############Ende##########
# Hier wird die Datei auf aktuelles Datum geprüft. Ergebnis wird dann ausgegeben.
print LogDatei ("INFO : ","Der Zeitstempel der Datei wird geprüft!\n");
my $dir = $SqlSrvJobs;
opendir(DIR,$dir) or die $!; # Verzeichnis "öffnen"
#print LogDatei $dir;
my @verzeichnisse = grep{-f $dir .'/'.$_}readdir(DIR);
for my $file(@verzeichnisse)
{
my $file = $SqlSrvJobs2;
if(existsGlobalCheck($file,24))
{
# Wenn Datei im Verzeichnis vorhanden, dann prüfen ob Suchstring in der Datei enthalten ist.
print LogDatei "Die Datei: " . $file . " wurde im Verzeichnis gefunden und hat ein aktuelles Datum!\n";
print LogDatei '+' x 120, "\n";
print LogDatei "Die Datei: " . $file . " wird gelesen und geprüft!\n";
my $file = $SqlSrvJobs2;
my $check = ' xxxxxxxx';
open (IN, $file) || die "File kann nicht geoeffnet werden !\n";
open my $fh,'<',$file or die $!;
while( my $line = <$fh> )
{
if( $line =~ m/\Q$check\E/i)
{
$DateiCheck = 1;
last;
}
}
if ($DateiCheck == 1)
{
print LogDatei "Der Suchstring in der Datei wurde gefunden!! \n";
print LogDatei '+' x 120, "\n";
}
else
{
print LogDatei "Der Suchstring in der Datei wurde nicht gefunden!! \n";
}
}
else
{
print LogDatei "Es besteht in dem Verzeichnis keine aktuelle Datei!\n";
$DateiCheck = 0;
}
## Hier wird nach Durchlauf der Kontrolle ein Statment abgegeben wenn keine aktuellen Dateien vorhanden sind!
unless($DateiCheck)
{
print LogDatei "Prüfung abgebrochen, da eine der Prüfungen nicht OK war!! Bitte prüfen!!!\n";
}
return $DateiCheck # Hier wird der ermittelte Rückgabewert aus der Subroutine übergeben!
}
} # End of: sub DATEI CHECK
#close DateiCheck
####################################################################################################################################
###########################################################################################################################
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Subroutine existsFileInDirectory
# Diese Routine überprüft, ob eine Datei in einem Verzeichnis existiert.
# Parameter:
# - Name der Datei
# - Name des Verzeichnisses
#
# Rückgabewerte:
# 1 = Die Datei existiert in dem Verzeichnis
# 0 = Die Datei existiert nicht in dem Verzeichnis
sub existsFileInDirectory
{
my $datei;
my $Ergebnis = 0;
my $verzeichnis = $SqlSrvJobs;
opendir VH, $verzeichnis or die "Kann $verzeichnis nicht oeffnen: $!";
foreach $datei (readdir VH)
{
next unless $datei =~ /reset_QcDemoPj.log$/;
if ($datei)
{
$Ergebnis = 1;
print LogDatei '#' x 120, "\n";
print LogDatei '#' x 120, "\n";
print LogDatei "Die Datei: $datei wurde im Verzeichnis: $verzeichnis gefunden!\n";
}
else
{
$Ergebnis = 0;
print LogDatei "Die Datei: $datei wurde im Verzeichnis: $verzeichnis nicht gefunden!\n";
}
}
return $Ergebnis;
}
User since
2003-08-04
14371
Artikel
ModeratorIn
Was funktioniert nicht? Bekommst Du eine Fehlermeldung?
User since
2005-07-06
84
Artikel
BenutzerIn
Hi,
ja ich bekomme die Meldung " Bareword "existsFileInDirectory" not allowed while "strict subs" in use at D:Verzeichnis.pl line 115
Execution compilations Error
Vieleicht hilft das.
Achso bezieht sich auf die Zeile mit
if (existsFileInDirectory)
{
print "Datei gefunden";
}
##### hier an der Stelle
else
{
print "Datei nicht gefunden";
}
Gruss
Leissi:rock:\n\n
<!--EDIT|leissi|1178630927-->
User since
2005-07-06
84
Artikel
BenutzerIn
Hi,
glaube ich habe das Problem gefunden ich hätte die Subroutine wie folgt aufrufen müssen:
if (existsFileInDirectory())
Kann das das Problem gewesen sein?? Denn jetzt übergibt er gefunden oder nicht gefunden!
Gruss
Leissi
User since
2003-08-04
14371
Artikel
ModeratorIn
Mach mal () hinter existsFileInDirectory also
if ( existsFileInDirectory() ). Sonst wird es nicht als Funktions-Aufruf gewertet.
User since
2005-07-06
84
Artikel
BenutzerIn
Hi,
Danke für den Tip, habe ich umgesetzt.
Gruss
Leissi