Schreibweise verkürzen?
Markus Trusk
- perl
0 Erwin0 Markus Trusk0 Erwin0 Markus Trusk0 Eternius
0 Matti Maekitalo0 Christian Kruse
Hallo,
Ich übergebe in einem CGI Script 10 Parameter. Jetzt wollte ich die Schreibweise irgendwie abkürzen, dass ich nicht..
my $nick = $query->param('nick');
my $pass = $query->param('pass');
my $re_pass = $query->param('re_pass');
my $email = $query->param('email');
.
.
..schreiben muss. Ich dachte an etwas, dass vielleicht irgendwie so aussieht:
my @values = $query->param???
..nur gibt es da überhaupt eine Möglichkeit?
Bei der Erklärung zu CGI auf cpan.org habe ich nur..
FETCHING THE NAMES OF ALL THE PARAMETERS PASSED TO YOUR SCRIPT
und
FETCHING THE VALUE OR VALUES OF A SINGLE NAMED PARAMETER
gefunden, was aber eben nicht ganz das ist, was ich brauche.
Markus Trusk.
Hallo Markus,
Ich übergebe in einem CGI Script 10 Parameter. Jetzt wollte ich die Schreibweise irgendwie abkürzen, dass ich nicht..
my $nick = $query->param('nick');
my $pass = $query->param('pass');
my $re_pass = $query->param('re_pass');
my $email = $query->param('email');
.
.
..schreiben muss. Ich dachte an etwas, dass vielleicht irgendwie so aussieht:my @values = $query->param???
Jow! So isses, ganz genauso.
Falls du die objektorientierte Schreibweise nicht magst:
use CGI 'param';
my $name = param('name');
Gruss, Rolf-Heinz-Erwin
Hi,
my @values = $query->param???
Jow! So isses, ganz genauso.
Das funktioniert aber nur mit den "Namen", aber nicht mit den Werten. Ich bekomme nur die Namen aus dem Formular (name="") zurückgeliefert. Es steht sogar auf cpan.org, dass es nur so ist.
Markus Trusk.
Hi Markus,
my @values = $query->param???
Jow! So isses, ganz genauso.Das funktioniert aber nur mit den "Namen", aber nicht mit den Werten. Ich bekomme nur die Namen aus dem Formular (name="") zurückgeliefert. Es steht sogar auf cpan.org, dass es nur so ist.
Ssschuldche, habch doch glatt vergessen. Die Values bekommst du dann so:
my @names = param;
foreach my $name (@names){
my $value = param($name);
}
Gruss, Erwin
Hi,
hmmm, das ist keine schlechte Idee so :)
Eine Frage aber noch. Wenn ich die Namen so aus dem query hole, habe ich am Schluss einen Namen namens x und y? Ich habe aber 100%ig keine Namen die x und y heißen, zumal die Namen doch so ausgegeben werden, wie sie in dem Formular stehen und bei dem letzten Namen in der Reihe, also der Name, der vor dem "x" und "y" in der Reihe der übergebenen Namensliste steht, ist eben das Formular aus und bei der Übergabe gibt es auch nichts, wo ich irgendwo ein x und y definiert habe. (Vor allem habe ich noch nie Variablen so benannt). Gibt es dafür eine Erklärung, wo das herkommen könnte?
Markus Trusk.
gude,
also ich hab ein image als submit button mal benutzt, und ich glaube der mozilla wars, gibt dir die koordinaten mit, wo du auf das bild geklickt hast.
gruss
use Mosche;
Ich übergebe in einem CGI Script 10 Parameter. Jetzt wollte ich die Schreibweise irgendwie abkürzen, dass ich nicht..
my $nick = $query->param('nick');
my $pass = $query->param('pass');
my $re_pass = $query->param('re_pass');
my $email = $query->param('email');
..schreiben muss. Ich dachte an etwas, dass vielleicht irgendwie so aussieht:my @values = $query->param???
Du musst irgendwann doch sowieso einzeln auf die Parameter zugreifen. Deswegen ist hier ein Array eine nicht gerade ergonomische Speicherart.
Bliebe die Möglichkeit mit dem Hash:
my %hash = map { $_ => $query->param($_) } qw(nick pass re_pass email); # ungetestet
my @values = map { $query->param($_) } $query->param; # dito; Reihenfolge nicht sicher
Du kannst den Hash zwar schön an Subroutinen übergeben, aber wirklich sinnvoller als mit param greifst du damit auch nicht zu.
Lass es doch einfach, wie es ist.
use Tschoe qw(Matti);
Hi,
ok wahrscheinlich hast du recht.
Markus Trusk.
Hallo Matti,
[...]
Bliebe die Möglichkeit mit dem Hash:
my %hash = map { $_ => $query->param($_) } qw(nick pass re_pass email); # ungetestetoder eben
my @values = map { $query->param($_) } $query->param; # dito; Reihenfolge nicht sicher
Er könnte aber auch den Hash folgendermaßen füllen:
my %hash = map { $_ => $query->param($_) } $query->param;
also eine Kombination Deiner beiden Vorschläge. So könnte er es in ein(e) universell einsetzbare(s) Routine/Modul einbauen.
Du kannst den Hash zwar schön an Subroutinen übergeben, aber wirklich sinnvoller als mit param greifst du damit auch nicht zu.
Lass es doch einfach, wie es ist.
Meinst Du hier "print param('param');" statt "$param = param('param'); print $param;"?
Gruß Alex
use Mosche;
Du kannst den Hash zwar schön an Subroutinen übergeben, aber wirklich sinnvoller als mit param greifst du damit auch nicht zu.
Meinst Du hier "print param('param');" statt "$param = param('param'); print $param;"?
Ja, außer er will die Variable ($param) irgendwie weiter benutzen.
use Tschoe qw(Matti);
Hallo Markus,
Hallo,
Ich übergebe in einem CGI Script 10 Parameter. Jetzt wollte ich die Schreibweise irgendwie abkürzen, dass ich nicht..my $nick = $query->param('nick');
my $pass = $query->param('pass');
my $re_pass = $query->param('re_pass');
my $email = $query->param('email');
.
.
aus perldoc CGI:
IMPORTING ALL PARAMETERS INTO A NAMESPACE:
$query->import_names('R');
This creates a series of variables in the 'R' namespace. For example, $R::foo,
@R:foo. For keyword lists, a variable @R::keywords will appear. If no namespace is
given, this method will assume 'Q'. WARNING: don't import anything into 'main'; this
is a major security risk!!!!
NOTE 1: Variable names are transformed as necessary into legal Perl variable names.
All non-legal characters are transformed into underscores. If you need to keep the
original names, you should use the param() method instead to access CGI variables by
name.
NOTE 2: In older versions, this method was called import(). As of version 2.20, this
name has been removed completely to avoid conflict with the built-in Perl module
import operator.
Grüße,
CK