Variablen deklaration
Reinhard Doberstein
- perl
HAllo,
jedesmal wenn ich ein Perlprogramm schreibe beginnt das wie folgt:
+-----------------+
use strict;
my $cgidaten;
my @pairs;
my $pair;
my $name;
my $value;
...
+-----------------+
und dann kommen, je nach Programm, bis zu mehreren Seiten "my ..." Angaben.
Kann man das irgendwie Kompakter schreiben?
my $var1,$var2;
geht ja wohl nicht.
By
Reinhard
my $var1,$var2;
geht ja wohl nicht.
Ich bin mir ziemlich sicher, dass das sehr wohl geht.
Zumindest mache ich das in Unterroutinen immer so.
my $x, $y, $z, $i, etc;
my $var1,$var2;
geht ja wohl nicht.
Ich bin mir ziemlich sicher, dass das sehr wohl geht.
Zumindest mache ich das in Unterroutinen immer so.
my $x, $y, $z, $i, etc;
In den Fall bekomme ich die Fehlermeldung:
Global symbol "$y" requires explicit package name at irgendwo.pl line 7.
Global symbol "$z" requires explicit package name at irgendwo.pl line 7.
usw.
line 7 ist dabei die Zeile mit dem "my $x, $y, $z, $i;"
Ich arbeite mit Perl 5.005 unter Windows NT4.
By
Reinhard
my $var1,$var2;
geht ja wohl nicht.
Ich bin mir ziemlich sicher, dass das sehr wohl geht.
Zumindest mache ich das in Unterroutinen immer so.
my $x, $y, $z, $i, etc;
In den Fall bekomme ich die Fehlermeldung:
Global symbol "$y" requires explicit package name at irgendwo.pl line 7.
Global symbol "$z" requires explicit package name at irgendwo.pl line 7.
usw.
line 7 ist dabei die Zeile mit dem "my $x, $y, $z, $i;"
Hmm komisch. Vielleicht ist "strict" da etwas eigen? :) Dann mach es halt so:
my $x; my $y; my $i; etc
Ist zwar nicht wirklich schoen und auch nicht weniger Arbeit aber vielleicht uebersichtlicher... Die bessere Idee waere aber wahrscheinlich einfach auf globale Variablen so gut es geht zu verzichten. ;) Dass du da seitenlange Anweisungen hast klingt irgendwie merkwuerdig. Wenn du den Stil beibehalten willst, dann ist es vielleicht besser strict gar nicht erst zu verwenden...
Spark
Ah ok, Matti hat es aufgeklaert. =) Das hatte ich glatt vergessen. :/
Spark
Hallo Bernd,
jedesmal wenn ich ein Perlprogramm schreibe beginnt das wie folgt:
+-----------------+
use strict;
my $cgidaten;
my @pairs;
my $pair;
my $name;
my $value;
...
+-----------------+
und dann kommen, je nach Programm, bis zu mehreren Seiten "my ..." Angaben.
Kann man das irgendwie Kompakter schreiben?
Nun ja, die Variablennamen lassen ahnen, dass du ein Formular zu Fuss einlesen willst. Das jedoch geht in der Tat "kompakter":
use strict;
use CGI;
my $cgi = new CGI;
Fertig. Anschliessend kannst du mit einer Konstruktion wie $cgi->param('Vorname') z.B. auf die Daten aus einem Formularfeld namens "Vorname" zugreifen. Mehr zu alledem auf http://selfhtml.teamone.de/cgiperl/module/cgi.htm
viele Gruesse
Stefan Muenz
use Mosche;
Stefan hat bereits eine Vereinfachung gesagt, die ich dich bitte zu benutzen, weil du dir selbst viel Tränen und Schweiß ersparst, in deinem eigenen Code Fehler zu suchen. Zu deiner Frage:
my $var1,$var2;
geht ja wohl nicht.
Du musst die Klammern setzen.
my ($var1, $var2, ..., $varn);
Vgl. perldoc -f my
A "my" declares the listed variables to be local
(lexically) to the enclosing block, file, or
"eval". If more than one value is listed, the
list must be placed in parentheses. See the Pri-
vate Variables via my() entry in the perlsub man-
page for details.
Wenn mehr als ein Parameter [ an my] gegeben ist, müssen die Klammern gesetzt werden.
use Tschoe qw(Matti);
HAllo,
Stefan hat bereits eine Vereinfachung gesagt, die ich dich bitte zu benutzen, weil du dir selbst viel Tränen und Schweiß ersparst, in deinem eigenen Code Fehler zu suchen.
Bei einfachen Problemen mache ich es immer noch lieber 'per Hand'. Mir fehlt die Übung um es 'einfach so' anzuwenden. D.h. ich kämpfe dann mehr mit den Methoden als das ich produktiv bin. Grundsätzlich stimmt das aber natürlich was ihr schreibt.
Du musst die Klammern setzen.
my ($var1, $var2, ..., $varn);
Ja, so gehts.
Danke.
By Reinhard