Struppi: Simple Frage

Beitrag lesen

Also ich hab die Funktion

$req = POST $url, [ daten1 => 'daten', daten2 => 'hihi', ];

Die Funktion heißt POST? und du übergibst einen Scalar und eine Referenz auf eine Liste (die ein HASH ist).

Das mag ich jetzt in eine Funktion packen (Aufruf gleich). Irgendwie schaff' ich das nicht. Folgendes geht nicht :-(

&Func("http://www.server.com", [ daten1 => 'daten', daten2 => 'hihi', ]);

Das '&' Zeichen vor Funktionsuafrufen ist Perl 4 und wird nicht mehr empfohlen bzw. wird für bestimmte Sonderzwecke gebraucht.

sub Func()
{
my ($url, %data) = @_;

Das ist falsch

Wenn du dir die Warnungen ausgeben lassen würdest müßtest du eine Meldung bekommen irgendwas mit odd elements, da %data hier nur ein Element bekommt und du aber mindestens 2 brauchst (ein key/value Paar).

Richtig ist:
my ($url, $data) = @_;

(...)
my $req = POST $url, %data;

und hier entsprechend

my $req = POST $url, $data;

der zweite Parameter ist eine Referenz auf eine Liste und keine Liste (ein HASH ist auch eine Liste).

Was mache ich da falsch?

Zuwenig perldoc lesen.

Struppi.