Markus Trusk: Schreibweise verkürzen?

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.

  1. 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

    --
    Was sind schon Namen...
    1. 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.

      1. 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

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
        1. 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.

          1. 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

            --
            no strict; no warnings;
  2. 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

    oder eben

    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);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. Hi,
      ok wahrscheinlich hast du recht.

      Markus Trusk.

    2. Hallo Matti,

      [...]

      Bliebe die Möglichkeit mit dem Hash:
      my %hash = map { $_ => $query->param($_) } qw(nick pass re_pass email); # ungetestet

      oder 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

      --
      >> Dass in eine if Schleife zu packen schafft mein 10 jähriges Patenkind. [...]
      > Mhhh, wenn man if in Schleifen packt, muss man sich auch nicht wundern, wenn die Patenkinder verwöhnte Luder werden. [...]
      [TomIRL und Tom in ?t=64084&m=364291]
      ss:) zu:} ls:} fo:| de:[ va:| ch:| sh:( n4:& rl:° br:& js:| ie:| fl:| mo:}
      1. 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);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  3. 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

    --
    Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!