Hi,
ich habe einige Funktionen in ein functions.pl ausgelagert und meine anderen Skripte verwenden die funktionen in dem ich das functions.pl mit require lade. Das funktioniert auch, jedoch habe ich ein Problem mit dem logging.
Zum loggen habe ich eine Methode log_this die drei parameter verwendet und sich daraus die Logdatei herauszieht und dann reinschreibt. Zwei dieser Parameter werden in dem Hauptskript gesetzt und sollten dann im functions.pl sichtbar sein und verwendet werden können. DAs funktioniert aber nicht so wie ich mir das erhofft hatte.
Hier ein Beispiel
Mein Hauptskript in dem ich die functions.pl mit require lade
use 5.006;
use strict;
use warnings;
require "$ENV{'COPRA_HOME'}\\printmethod\\common\\scripts\\functions.pl";
my $customer = "mffm";
my $ordername = "OJ";
&log_this($customer,$ordername,"test");
&getPropertyFromFile("f:\\copra-server\\common\\configuration\\configuration.properties","test");
Ein Auszug aus der functions.pl
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
use PDF::API2;
use File::Basename;
my $id = "functions.pl:";
our $COPRA_HOME = $ENV{'COPRA_HOME'};
our %configValue;
our $customer;
our $ordername;
sub log_this{
my($customer,$ordername,$msg_to_print) = @_;
my $logfolder = "$ENV{'COPRA_HOME'}\\$customer\\logs";
my $logfileName = $ordername . ".log";
open(LOGFILE, ">> $logfolder\\$logfileName") or die "could not create logfile $logfolder\\$logfileName$!";
print LOGFILE &getTimestamp().":$msg_to_print\n";
close(LOGFILE);
}
sub getPropertyFromFile{
&log_this($customer,$ordername,"starting getPropertyFromFile");
my ($filename,$propertyName) = @_;
my $fileHashRef;
$fileHashRef = &readFileIntoHash($filename);
if (exists($fileHashRef -> {$propertyName})){
&log_this($customer,$ordername,"Property: $propertyName found with value: " . $fileHashRef ->{$propertyName} . " in file $filename");
return $fileHashRef ->{$propertyName};
}
else{
&log_this($customer,$ordername,"Property $propertyName does not exist in file $filename");
return;
}
}
Der Output ist leider nur wie folgt
2011_04_29_11_51_13:test
Aber die Methode getPropertyFromFile hat auch log_this aufrufe, diese werden aber nicht geschrieben.
Sieht die functions.pl gar nicht die beiden Variablen $customer und $ordername die im Hauptskript gesetzt wurden?
Jemand ne idee?
Danke