Deklaration überall notwendig
Markus
- perl
Hallo zusammen,
ich habe eine Datei vars.pl in der alle Variablen definiert sind.
Mittels
require "vars.pl" || die("can't find init, $!");
binde ich im Hauptprogramm progr.pl diese ein.
Muss ich die Befehle:
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use strict;
auch in vars.pl definieren oder reicht es wenn diese in progr.pl stehen?
Vielen Dank im voraus..
Muss ich die Befehle:
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use strict;auch in vars.pl definieren oder reicht es wenn diese in progr.pl stehen?
jein. Carp und warnings reicht einmal . strict musst du sowieso nicht, hilft dir aber Fehler zu vermeiden und zu finden.
Die Frage ist dann wie du die Variabeln einbindest, weil du in dem Falle alle Exportieren musst. Sinnvoller kann es sein entweder ein ini File zu nehmen, oder einen HASH zu exportieren in dem alle Werte als Schlüssel gespeichert sind.
Struppi.
Hi Struppi,
in vars.pl steht z.B.
our ($gPathData,$gPathHome,$gPathCgi);
our ($gHost,$gIDnr);
$gPathData = "c:";
$gPathHome = "d:",
In prog.pl binde ich dann mit "require vars.pl" ein damit ich diese globalen Variablen nutzen kann.
Oder ist das die falsche Methode?
in vars.pl steht z.B.
our ($gPathData,$gPathHome,$gPathCgi);
our ($gHost,$gIDnr);$gPathData = "c:";
$gPathHome = "d:",
oder direkt vor der Deklaration das our, aber das ist Geschmackssache.
In prog.pl binde ich dann mit "require vars.pl" ein damit ich diese globalen Variablen nutzen kann.
Oder ist das die falsche Methode?
eigentlich nicht, aber so musst du die Variabeln mit dem Modulnamen ansprechen wenn du strict verwendest.
Struppi.
Hallo Struppi,
In prog.pl binde ich dann mit "require vars.pl" ein damit ich diese globalen Variablen nutzen kann.
Oder ist das die falsche Methode?
eigentlich nicht, aber so musst du die Variabeln mit dem Modulnamen ansprechen wenn du strict verwendest.
Ja, aber nur wenn vars.pl einen eigenen Namensraum hat. Und das hat Markus hier anscheinend nicht gemacht.
Viele Grüße
Patrick Canterino
Hi Patrick,
nein, den Begriff Namensraum kenne ich nicht.
Kannst du mir bitte sagen, was ich ändern muss. Die Variablen in vars.pl sollen global in allen Modulen verfügbar sein.
Danke !
Hallo Markus,
nein, den Begriff Namensraum kenne ich nicht.
Das kannst du hier nachlesen:
http://de.selfhtml.org/perl/funktionen/module.htm#package
Kannst du mir bitte sagen, was ich ändern muss. Die Variablen in vars.pl sollen global in allen Modulen verfügbar sein.
Du musst gar nichts ändern. Wenn du es so machst, wie du es bisher gemacht hast, dann sollten dir alle Variablen aus vars.pl in den Scripts, in denen du es einbindest, zur Verfügung stehen.
Viele Grüße
Patrick Canterino
Hallo Patrick,
Das kannst du hier nachlesen:
http://de.selfhtml.org/perl/funktionen/module.htm#package
Besser hier:
http://de.selfhtml.org/perl/funktionen/module.htm#allgemeines
Viele Grüße
Patrick Canterino
Hi Patrick,
danke für die Links.
bye
Markus
你好 Patrick,
Kannst du mir bitte sagen, was ich ändern muss. Die Variablen in
vars.pl sollen global in allen Modulen verfügbar sein.Du musst gar nichts ändern. Wenn du es so machst, wie du es bisher
gemacht hast, dann sollten dir alle Variablen aus vars.pl in den
Scripts, in denen du es einbindest, zur Verfügung stehen.
strict haut dir das Script so um die Ohren, da müsste man den Package-Namen
(da keiner angeben wurde ist das implizit main) angeben. Besser, man macht
es richtig, mit Namensräumen; $config::variable ist vor allem auch besser
lesbar als $variable.
再见,
克里斯蒂安
nein, den Begriff Namensraum kenne ich nicht.
Grob gesagt, dein Skript läuft im Namesraum main, die Packte bzw. Module gaben ihren eigenen Namensraum.
Kannst du mir bitte sagen, was ich ändern muss. Die Variablen in vars.pl sollen global in allen Modulen verfügbar sein.
$main::VarName
oder use Exporter
Struppi.
eigentlich nicht, aber so musst du die Variabeln mit dem Modulnamen ansprechen wenn du strict verwendest.
Ja, aber nur wenn vars.pl einen eigenen Namensraum hat. Und das hat Markus hier anscheinend nicht gemacht.
Nein, wenn er use strict verwendet.
Struppi.