Variablen aus Externen Dateien
jc
- perl
Hallo,
ich habe schon viel darüber gelesen, aber bei mir klappt es einfach nicht.
Wie kann ich aus einer externen Datei, z.B. vars.pl, Variablen einlesen und in meinem Hauptprogramm nutzen?
index.pl
----------------------------------------------
#!/usr/bin/perl -w
use strict;
do "vars.pl";
print $test;
----------------------------------------------
vars.pl
----------------------------------------------
my $test = "TEST";
----------------------------------------------
Bei mir kommt jedesmal die Meldung "Global symbol "$test" requires explicit package name"
Ich habe auch schon use und require ausprobiert, aber ohne Erfolg :(
Weiß jemand Rat?
cu
jc
Hallo,
ich habe schon viel darüber gelesen, aber bei mir klappt es einfach nicht.
soso. Guck mal weiter unten...
Wie kann ich aus einer externen Datei, z.B. vars.pl, Variablen einlesen und in meinem Hauptprogramm nutzen?
index.pl
#!/usr/bin/perl -w
use strict;
do "vars.pl";
=dein script
use strict;
require 'vars.pl';
use vars qw($test);
print $test;
=cut
print $test;
vars.pl
my $test = "TEST";
Bei mir kommt jedesmal die Meldung "Global symbol "$test" requires explicit package name"
Ich habe auch schon use und require ausprobiert, aber ohne Erfolg :(
Weiß jemand Rat?
=vars.pl
$test = "TEST";
1;
=cut
It means: Jede library muss in der letzten Zeile einen Wahren Wert stehen haben , z.B. 1;
Gruss, Erwin
Hallo,
=dein script
use strict;
require 'vars.pl';
use vars qw($test);
print $test;
=cut
=vars.pl
$test = "TEST";
1;
=cut»» It means: Jede library muss in der letzten Zeile einen Wahren Wert stehen haben , z.B. 1;
Ah ok, danke für die Antwort. Wie ist das, wenn ich mehrere Variablen habe? Dann muss ich für jede "use vars qw($...)" Zeile einfügen?
Ohne 'strict' würde es auch mit 'do' klappen, sehe ich das richtig?
cu
jc
Hallo,
Ah ok, danke für die Antwort. Wie ist das, wenn ich mehrere Variablen habe? Dann muss ich für jede "use vars qw($...)" Zeile einfügen?
das kann auch in der library deklariert werden.
Ohne 'strict' würde es auch mit 'do' klappen, sehe ich das richtig?
Näheres dazu findest du hier
http://perl-seiten.bei.t-online.de/perl/perl_perl.html
Gruss, Erwin
Hallo,
das kann auch in der library deklariert werden.
Sorry, aber das verstehe ich noch nicht, kannst du das bitte in einem kleinen bsp darstellen?
cu
jc
Hallo,
das kann auch in der library deklariert werden.
Sorry, aber das verstehe ich noch nicht, kannst du das bitte in einem kleinen bsp darstellen?
Sorry, da hab ich MÜLL verzählt. Deklarieren musst du im Script was die Library verwendet.
Also mit
use vars qw();
deklarierst die Variablen die in einer Lib verwendet werden im Script was die Lib mit require einbindet:
=script
#!/usr/bin/perl
require 'lib.pl';
use strict;
use vars qw($test);
print $test;
=end script
Und in der Lib kannst du die Variablen setzen:
=lib
$test = "TEST";
1;
=end lib
machs gut, Erwin
Ach ja, ohne strict geht zwar vieles, aber auch vieles was gar nicht gehen darf ;-)
Hallo,
Also mit
use vars qw();
deklarierst die Variablen die in einer Lib verwendet werden im Script was die Lib mit require einbindet:
Ok, danke, das klappt jetzt gut. Aber nochmal eine Frage bezüglich "use vars qw();". Muss ich das für JEDE Variable in "lib.pl" einmal machen, oder gibts da ne andere Möglichkeit?
Weil wenn ich in der "lib.pl" eine Variable hinzufüge, müsste ich die ja auch nochmal per "use vars qw();" einbinden.
Ach ja, ohne strict geht zwar vieles, aber auch vieles was gar nicht gehen darf ;-)
Ein Grund, warum ich es ohne strict nicht machen möchte.
Nachtrag:
So, ich habe es jetzt ziemlich lange ausprobiert, verschiedene Varianten von der Website, die du mir gegeben hast, und das aus deinem 1. Post...
Dabei habe ich herrausgefunden: Solange ich "strict" nutze geht es nicht. Ohne strict läuft es wunderbar.
Hast du eine Ahnung, woran das liegen kann?
cu
jc