Thread Denkfehler mit Global Symbol requires explicit package name? (6 answers)
Opened by crojay at 2011-04-01 19:15

crojay
 2011-04-01 19:15
#147287 #147287
User since
2011-03-08
81 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ein Perl-Script, in dem ich durch require ein anderes Perl-Script aufrufe, dass wiederum anhand einer Property Datei einen Hash befüllt. Wenn ich nun use strict in dem aufrufenden Script1 verwende, dann erhalte ich den Fehler
Global Symbol "%configValue" requires explicit package name

Das liegt daran das ich die variable %configValue in Script1 nicht vorher deklariert habe, so denke ich mir das zumindest. Die Variable wird doch aber in Script2 deklariert, das ich über require importiere.
Es funktioniert natürlich ohne use strict...kann ich es auch zum laufen bekommen mit use strict? Oder geht das gar nicht?

Danke für eure Ratschläge.

Script1:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use POSIX;
use File::Copy;

my $importConfigurationPath = substr($0,0,2 ) . "/copra-server/common/scripts/importConfiguration.pl";
require "$importConfigurationPath";


#exit falls aufruf mit != 3 argumenten
if ($#ARGV + 1 != 3){
print "invalid amount of args, syntax has to be distributeJobs.pl [BPS_CONFIG_FILE] [JobsToDistributeFolder] [job-prefix]]\n";
exit;
}

(my $config_filename, my $jobsToDistributeFolder, my $jobPrefix) = @ARGV;
my $logfolder = $configValue{logfolder};



Script2:
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
use strict;
my $importConfigurationFile = substr($0,0,2) . "/copra-server/common/configuration/configuration.properties";
our %configValue;
print "\nstarting importconfiguration.pl\n";

open(FILE,$importConfigurationFile);
while(defined(my $line = <FILE>)) {

if ($line =~ m/.*=.*/g){
chomp($line);
my $key = substr($line,0,index($line,"="));
my $value = substr($line,index($line,"=")+1,length($line));
#print "key is: $key -----> value is: $value\n";
$configValue{"$key"}="$value";
}

}
close(FILE);

while ((my $currentKey,my $currentValue) = each %configValue){
print "key, value pair is ($currentKey,$currentValue)\n";
}
print "-------import finished -----------------------\n";

View full thread Denkfehler mit Global Symbol requires explicit package name?