Code importieren, aber Probleme mit Paketen?
Markus Trusk
- perl
Hi,
Zur besseren Übersicht will ich Code von einer 2. Daten in die Hauptdatei mit require 'settings.pl'; importieren. Es sind 4 Variablen, die mit my definiert wurden. Jetzt habe ich aber das Problem, dass das Hauptscript die Variablen nicht anerkennt.
(Global symbol "$database" requires explicit package name at C:/Apache2/www/vinyldb/register.pl line 214.)
Wie schaffe ich es die importierten Zeilen vom Hauptscript verwenden zu lassen?
Markus Trusk.
Hallo Markus,
Zur besseren Übersicht will ich Code von einer 2. Daten in die Hauptdatei mit require
'settings.pl'; importieren. Es sind 4 Variablen, die mit my definiert wurden. Jetzt habe
ich aber das Problem, dass das Hauptscript die Variablen nicht anerkennt.
(Global symbol "$database" requires explicit package name at
C:/Apache2/www/vinyldb/register.pl line 214.)
Wie schaffe ich es die importierten Zeilen vom Hauptscript verwenden zu lassen?
perldoc Exporter
package settings;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw($var);
our $var = 1;
1;
==============snip==================
use settings qw($var1);
print $var1,"\n";
Grüße,
CK
Hi,
hmmm. Ich weiß nicht, aber ist das nicht nur für Module gedacht?
Das, was ich importieren will, ist aber normaler Code, der eben 4 my Variablen enthält, da ich die Datenbankeinstellungen in mehreren Scripts gleichzeitig verwenden will, sodass man sie nicht extra in jedem Script ändern muss, wenn man eine andere Datenbank angeben will.
Markus Trusk.
Hallo Markus,
hmmm. Ich weiß nicht, aber ist das nicht nur für Module gedacht?
Das, was ich importieren will, ist aber normaler Code, der eben 4 my Variablen enthält,
da ich die Datenbankeinstellungen in mehreren Scripts gleichzeitig verwenden will, sodass
man sie nicht extra in jedem Script ändern muss, wenn man eine andere Datenbank angeben will.
Sowas nennt man in Perl allgemeinhin Modul ;-)
Grüße,
CK
Zur besseren Übersicht will ich Code von einer 2. Daten in die Hauptdatei mit require 'settings.pl'; importieren. Es sind 4 Variablen, die mit my definiert wurden. Jetzt habe ich aber das Problem, dass das Hauptscript die Variablen nicht anerkennt.
Es gibt mehrere Möglichkeiten, die von Christian ist letztlich die umständlichste wenn du viele 'settings' importieren willst, da du für jede Variabel die gleiche Prozedur wiederholen musst.
Einmal gibt es das Modul Config::IniFiles mit dem man, ähnlich wie in windows ini Files, Variabeln definieren kann.
Oder du verwendest ein HASH in deinem Modul und exportierst das.
package Ini;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(%INI);
%INI = (
var1 => 'wert',
var2 => 'wert 2',
...
);
in deinem Programm:
use Ini;
print $INI{var1};
Struppi.
Hallo,
danke dir, hat geklappt :)
Markus Trusk.
Das Blöde ist aber, dass man in settings.pm einfach hineinschauen kann, indem man einfach die Adresse zur datei in der URL Bar eingibt (wenn man sie weiß), aber da dort Datenbankpasswörter usw gespeichert sind, ist mir das ehrlich gesagt zu riskant. Deswegen wollte ich eigentlich die Datei settings.pl nennen, aber da funktioniert das importieren wieder nicht.
([Sat Apr 03 10:20:43 2004] [error] [client xxx.xxx.xxx.xxx] Execution of C:/Apache2/www/vinyldb/importtest.pl aborted due to compilation errors.
, referer: http://xxx.xxx.xxx.xxx/vinyldb/
use Mosche;
Das Blöde ist aber, dass man in settings.pm einfach hineinschauen kann, indem man einfach die Adresse zur datei in der URL Bar eingibt (wenn man sie weiß), aber da dort Datenbankpasswörter usw gespeichert sind, ist mir das ehrlich gesagt zu riskant. Deswegen wollte ich eigentlich die Datei settings.pl nennen, aber da funktioniert das importieren wieder nicht.
Probier das in der Reihenfolge
use Tschoe qw(Matti);
Hallo Struppi,
Es gibt mehrere Möglichkeiten, die von Christian ist letztlich die umständlichste wenn du
viele 'settings' importieren willst, da du für jede Variabel die gleiche Prozedur
wiederholen musst.
Den Weg zur Exportierung eines Hashes habe ich dem OP getrost überlassen.
Grüße,
CK