Thread Variablen eines scripts im importierten Script verwenden (2 answers)
Opened by crojay at 2011-04-29 12:08

crojay
 2011-04-29 12:08
#148080 #148080
User since
2011-03-08
81 Artikel
BenutzerIn
[default_avatar]
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
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
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
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
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

View full thread Variablen eines scripts im importierten Script verwenden