Globale Variablen auslagern
Christian
- perl
Hallo,
ich habe mehrere Skripte, die dieselben Variablen benutzen. Also moechte ich die auslagern, damit Aenderungen einfach bleiben.
Eine Loesung, die ich gefunden habe ist folgende:
---- default.cfg ----
$var1 = 'bla';
$var2 = 'blubb';
----- skript.pl -----
/usr/bin/perl -w
use strict;
{ package Config; do 'default.cfg'; }
print "Variable1: ".$Config::var1;
Das funktioniert auch wunderbar, nur leider bekomme ich immer eine Warnung, wenn ich meine Variable nur einmal benoetige:
Name "Config::var1" used only once: possible typo at ...
Das ist zwar nur eine Warnung, aber sie stoert mich.
Wie kann ich diese Fehlermeldung vermeiden? (Natuerlich ohne auf "-w" zu verzichten :-) )
Gruessle
Christian
Hi,
versuche mal, Deine Variablen mit our zu definnieren, d.h. z.B.
our $var1 = 'bla';
our $var2 = 'blubb';
MfG
ich habe mehrere Skripte, die dieselben Variablen benutzen. Also moechte ich die auslagern, damit Aenderungen einfach bleiben.
Da gibt es mehrere Lösungen.
Einmal mit our (wie Danny schon erwähnt hat) oder mit Exporter oder mit einem Modul, dass ein INI Format lies (z.b. Config::iniFiles ).
Struppi.
Hell-O!
ich habe mehrere Skripte, die dieselben Variablen benutzen. Also moechte ich die auslagern, damit Aenderungen einfach bleiben.
Verwende use oder require, je nach Anforderung.
Das funktioniert auch wunderbar, nur leider bekomme ich immer eine Warnung, wenn ich meine Variable nur einmal benoetige:
Name "Config::var1" used only once: possible typo at ...
Das ist zwar nur eine Warnung, aber sie stoert mich.
Sie soll dir helfen, unnütz deklarierte Variablen zu vermeiden. Zwar sollte dies in deinem Fall kein echtes Problem sein, aber bei einer Vielzahl von Symbolen kann's schnell unübersichtlich werden :-)
Wie kann ich diese Fehlermeldung vermeiden? (Natuerlich ohne auf "-w" zu verzichten :-) )
Gar nicht, denn genau für solche Dinge ist -w gedacht: Auf fragwürdigen Code hinzuweisen. Wenn dein Script sauber läuft und du die Warnungen abgearbeitet und für unkritisch befunden hast, besteht m.E. nach der Testphase kein Anlass, Perlscripte mit der Kommandozeilenoption -w laufen zu lassen.
Siechfred