Wie man eine config-Datei in ein perl-Skript
Okay , ich gebe auf und bitte um Hilfe;
Ich habe ein Skript Zugriff auf Informationen in meiner MySQL-Datenbank. Ich möchte, dass meine Anmeldeinformationen begraben in einer Datei, die ich einschließen kann, für die Sicherheit. Zu machen, noch habe ich etwas ordentlicher, ich habe versucht, erstellen Sie ein sub-Verzeichnis (include) in meine cgi-bin-Verzeichnis.
Dies ist ein einfaches Beispiel, das weglassen all der db-Zeug (weil das ist nicht mein problem).
config.pl (innerhalb der include-dir)
#!/usr/bin/perl
use strict;
use warnings;
$data_base = 'dbi::mysql::test_db';
$db_user = 'some_user';
$db_pw = 'password';
test_driver.pl (innerhalb des cgi-bin-Verzeichnis)
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
require'/include/config.pl';
$param1 = $data_base;
$param2 = $db_user;
$param3 = $db_pw;
Den ersten Fehler, ich bin immer nicht finden können, umfassen. Ich habe auch gesehen, wie viele posts, die zeigen, dass das hinzufügen our
vor den vars. Auch die meisten Beiträge erwähnen nicht die Verwendung require
bei allen, aber bei einfachen Sachen würde ich eher.
Landete ich im folgenden einige Anleitungen, wie man ein Modul. Ich habe es zu arbeiten, aber das scheint wie eine Menge Aufwand für eine simple config-Datei.
- Haben Sie die config-Datei Module on CPAN helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Pfad, den Sie in der
require
ist aus: von Ihnen angegebenen absoluten Pfad, aber Sie verwechselten den docroot des Servers für die eigentliche root-Dateisystem./include/config.pl
ist verankert in dem root-Dateisystem, den gleichen Weg/usr/bin/perl
ist../include/config.pl
wäre ein Pfad relativ zum aktuellen Verzeichnis (vermutlichcgi-bin
Ordner) und kann besser arbeiten. Wenn Sie wissen, ist der absolute Pfad zum cgi-bin Verzeichnis, können Sie einen absoluten Pfad:/var/www/whatever/structure/the/host/has/htdocs/cgi-bin/include/config.pl
Wenn Sie mit einem web-framework (ich hoffe, Sie sind) anstelle der einfachen, datiert, CGI, möglicherweise bereits eine Konfigurationsdatei vorhanden ist. E. g. Tänzerin hat eine YAML-Datei mit vielen Einstellungen, die Sie erweitern könnten.
Kommen wir zurück zu dem, was du tust, aber...
Wenn Sie
require
es eigentlich liest die Datei während der Ausführung. Jedoch, wie die Perldoc für benötigen Zustand:Lexikalische (aka lokalen Variablen, aka
my
Variablen) funktioniert nicht. Sie müssen Paket (aka global, akaour
) Variablen.Hier ist ein einfacher test:
test.pl
include.pl
Und wenn ich
test.pl
ich bekommen:Sehe ich ein paar Probleme. Zunächst, Sie zwingen sich auf eine bestimmte variable, die für Ihr Konto und Passwort. Dies ist nicht wirklich eine gute Programmier-Idee. Es ist im Grunde unsichtbar Zeug passiert, aus den Augen.
Statt einschließlich in einer Datei, warum nicht eine echte INI-Datei. Es gibt ein Perl-Modul, die ich verwendet habe, bevor Sie aufgerufen Config::Ini, dass ist Recht einfach zu bedienen. Erstellen Sie ein Windows wie eine INI-Datei, und Lesen Sie Ihre Daten aus.
Wenn Sie nicht möchten, verwenden Sie eine INI-Datei verwenden Sie Subroutinen. Auf diese Weise brauchen Sie nicht zu verwenden
our
Variablen, und du bist nicht stecken zu sagen, dass Ihr Passwort muss$password
. Nachdem alle, es ist sehr wahrscheinlich, dass diese Konfigurationsdatei wird verwendet für mehrere Programme. Es ist einfach besser, Programmierung:test_driver.pl
config.pl