Kommentator: Subroutine

Hallo!

Ich habe da zwei Subroutinen, die nicht so richtig funktionieren wollen. Bestimmt nur kleine Fehler, aber ich komme nicht drauf.

Erste:
sub var {
my %p = ();
$p{$_} = param($_) for (param());
return($p{$_});
}

Subroutine soll Daten aus Formular auslesen und dann diese zur Verfügung stellen. Ohne die Subroutine funktioniert es problemlos (return ist dabei dann weggelassen) . Würde es aber gerne in eine Routine mit dem Aufruf var(); packen, da es Zeit spart.

Zweite:

sub ausgabe($)
   {

print "Content-Type: text/html\n\n";

my $html = get("$p{'shift'}");
    for ($html) { s/<%%(.+?)%%>/$p{$1}/egs; }
    return($html);

}

...

print ausgabe("nextpage");

Leider will die auch nicht so recht.

Vielleicht weiss jemand weiter.

Danke!

  1. use Mosche;

    Erste:
    sub var {
    my %p = ();
    $p{$_} = param($_) for (param());
    return($p{$_});
    }

    Du legst jedes Mal in deiner Subroutine eine neue Variable an? Das ist sehr ineffizient. Greife doch lieber direkt auf param() zu, oder? Abgesehen davon ist $_ in der return Anweisung nicht unbedingt so definiert, wie du es willst. Willst du einen bestimmten Wert aus den Parametern auslesen? Dann solltest du vielleicht $_[0] benutzen statt $_. Willst du den gesamten Hash haben? Dann übergib auch den gesamten Hash.

    for ($html) { s/<%%(.+?)%%>/$p{$1}/egs; }

    Eas soll diese for-Schleife hier? Ist zwar syntaktisch nicht falsch, allerdings vollkommen unsinnig. Du willst irgendwas erreichen, dessen Grund ich nicht erkennen kann.

    use Tschoe qw(Matti);

    --
    $a=n(1001010);print chr($a+=$_)for(0,43,-2,1,-84,65,13,1,5,
    -12,-3,13,-82,48,21,13,-6,-76,72,-7,2,8,-6,13,-104);sub n{
    $b=0;$_=0;for($c=length$_[0];$c;--$c){$_+=_($b)if substr$_
    [0],$c-1,1;$b++;}$_}sub _{($d)=@_;for($e=1;$d--;$e*=2){}$e}
    1. Die for Schleife nutze ich, um alle Platzhalter (<%%Platzhalter%%>) in irgendeinem Dokument zu ersetzen. Bei dem Parametern will ich erstmal alle übergebenen Variablen eines Formulars auslesen und diese später nutzen.