Schrift
[thread]8982[/thread]

Übergabe eines Ergebnisses aus einer Subroutine



<< >> 6 Einträge, 1 Seite
leissi
 2007-05-08 17:07
#76568 #76568
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
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:

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
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;

}
renee
 2007-05-08 17:10
#76569 #76569
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was funktioniert nicht? Bekommst Du eine Fehlermeldung?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2007-05-08 17:20
#76570 #76570
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
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-->
leissi
 2007-05-08 17:35
#76571 #76571
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
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
renee
 2007-05-08 17:36
#76572 #76572
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach mal () hinter existsFileInDirectory also if ( existsFileInDirectory() ). Sonst wird es nicht als Funktions-Aufruf gewertet.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2007-05-08 19:02
#76573 #76573
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,

Danke für den Tip, habe ich umgesetzt.

Gruss

Leissi
<< >> 6 Einträge, 1 Seite



View all threads created 2007-05-08 17:07.