Thread Datei durchsuchen und ergänzen (18 answers)
Opened by f1database at 2005-02-16 18:11

f1database
 2005-02-17 10:28
#33003 #33003
User since
2005-02-16
5 Artikel
BenutzerIn
[default_avatar]
Danke für die schnellen Antworten ab so richtig weitergekommen bin ich nicht.

Um euch zu helfen mir hlfen zu können ist es wahrscheinlich das beste, dass ich den ganzen Sourcecode mal poste:

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#!/usr/local/bin/perl -w

#Installation des Hypofix-Datenverzeichnisses auf einen File-Server
#Bitte die einzelnen Schritte beachten

#Schritt 1
#Quellverzeichnis angeben

$quellverzeichnis = "./Dat";

#Schritt 2
#Zielverzeichnis angeben

$zielverzeichnis = "./Ziel";

#Schritt 3
#Programmverzeichnis angeben

$progverzeichnis = "./Prg";

################################################################
################################################################
#(NICHT AENDERN!)

################################################################
#Subroutine für Datumsstempel
sub Datumsstempel
{
($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
$jahr=$year;
$monat=$mon+1;
$tag=$mday;
$jahr=$year;

$jahr=$year +1900;

if (length($monat) == 1)
{
$monat="0$monat";
}
if(length($tag) == 1)
{
$tag="0$tag";
}
$sec = 0;
$min = 0;
$hour = 0;
$wday = 0;
$isdst = 0;
$ydat = 0;

$Datum=$tag."_".$monat."_".$jahr;
}

################################################################
#Subroutine für Zeitstempel
sub Zeitstempel
{
($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
$sekunde=$sec;
$minute=$min;
$stunde=$hour;

if (length($sekunde) == 1)
{
$sekunde="0$sekunde";
}
if(length($minute) == 1)
{
$minute="0$minute";
}
if(length($stunde) == 1)
{
$stunde="0$stunde";
}

$time = 0;
$time=($sekunde, $minute, $stunde) = (localtime);
$sek = $sekunde;
$minu = $minute;
$stun = $stunde;
$Zeit = $stun.":".$minu.":".$sek;
}

################################################################
#alte Logdatei entfernen
if (-e "copy.log")
{
system ("rm -f copy.log");
}

################################################################
#Datenverzeichnis von Windows in Unix-format konvertieren
system ("dos2unix ./$quellverzeichnis/*.*");

################################################################
#Logdatei öffnen und Eingabedaten übertragen:
open(LOGDATEI,">copy.log") or die $!;
Zeitstempel;
print LOGDATEI "##############################################################\n";
print LOGDATEI "Start des Kopiervorgangs: $Zeit \n\n";
print "##############################################################\n";
print "Start des Kopiervorgangs: $Zeit \n\n";
print LOGDATEI "Quellverzeichnis: $quellverzeichnis \n";
print LOGDATEI "Zielverzeichnis: $zielverzeichnis \n";
close LOGDATEI;

################################################################
#Subroutine für Befehl ausführen und loggen
sub ExecuteWithLogging
{
open(LOG,"$_[0] |") or die $!;
while(<LOG>)
{
print LOGDATEI $_;
}
}

################################################################
#Copyjob

open(LOGDATEI,">>copy.log") or die $!;
Zeitstempel;
print LOGDATEI "##############################################################\n";
print LOGDATEI "Start des Kopiervorgangs: $Zeit \n";
print "##############################################################\n";
print "Start des Kopiervorgangs: $Zeit \n";
system ("cp -f-a $quellverzeichnis $zielverzeichnis");
close LOGDATEI;

###############################################################
#IBB42.ini Datei anpassen

use Tie::File;
use strict;
use warnings;

my $file = "$zielverzeichnis/hypohall/ibb42.ini";
tie my @array,'Tie::File',$file or die $!;
foreach my $line(@array)
{
if($line =~ /DatenPfad/)
{
chomp $line;
$line .= "$zielverzeichnis\n";
}
}
untie @array;

foreach my $line(@array)
{
if($line =~ /ServerDatenPfad/)
{
chomp $line;
$line .= "$zielverzeichnis\n";
}
}
untie @array;

################################################################
#Appl.ini Datei anzupassen

use Tie::File;
use strict;
use warnings;

$file = "$progverzeichnis/hypofix/appl.ini";
tie my @array,'Tie::File',$file or die $!;
foreach my $line(@array)
{
if($line =~ /Name/)
{
chomp $line;
$line .= "$zielverzeichnis\n";
}
}
untie @array;

foreach my $line(@array)
{
if($line =~ /ServerName/)
{
chomp $line;
$line .= "$zielverzeichnis\n";
}
}
untie @array;


Wenn ich das ausführe bekomme ich folgende Konsolenausgabe:

Variable "$zielverzeichnis" is not imported at datencopy.pl line 138.
Variable "$zielverzeichnis" is not imported at datencopy.pl line 145.
Variable "$zielverzeichnis" is not imported at datencopy.pl line 155.
Global symbol "$zielverzeichnis" requires explicit package name at datencopy.pl line 138.
Global symbol "$zielverzeichnis" requires explicit package name at datencopy.pl line 145.
Global symbol "$zielverzeichnis" requires explicit package name at datencopy.pl line 155.
BEGIN not safe after errors--compilation aborted at datencopy.pl line 163.

Bin dankbar für jeden Vorschlag auch was eventuell den ganzen Aufbau des Skriptes betrifft. Wenn es geht wäre ich ich dankbar für Erklärungen, warum weshalb welche Änderungen.

View full thread Datei durchsuchen und ergänzen