Simple Frage
Peter Mairhofer
- perl
Hallo!
Ich komme mit einer simplen Sache nicht zurecht: Ich mag einer Funktion einen Hash übergeben.
Also ich hab die Funktion
$req = POST $url, [ daten1 => 'daten', daten2 => 'hihi', ];
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', ]);
sub Func()
{
my ($url, %data) = @_;
(...)
my $req = POST $url, %data;
(...)
}
Was mache ich da falsch?
Vielen Dank im Vorraus!
Holla,
Hallo!
Das mag ich jetzt in eine Funktion packen (Aufruf gleich). Irgendwie schaff' ich das nicht. Folgendes geht nicht :-(
Dass das nicht geht, hat so gewisse Gründe, die vielleicht egal sind , wenn man in Erfahrung bringen kann wenn man weiss was Du mit dieser Funktion erreichen möchtest ?
MfG
AndreasN
Hallo,
Das mag ich jetzt in eine Funktion packen (Aufruf gleich). Irgendwie schaff' ich das nicht. Folgendes geht nicht :-(
Dass das nicht geht, hat so gewisse Gründe, die vielleicht egal sind , wenn man in Erfahrung bringen kann wenn man weiss was Du mit dieser Funktion erreichen möchtest ?
Danke fuer deine schnelle Antwort!
Das geht nicht? Uhhhh, schlecht...
Ich will damit erreichen, dass ich eine einfache Funktion WebPost habe, der ich als ersten Parameter die URL uebergebe, als zweiten Parameter den Hash mit den Formulardaten. Die HTML-Seite wird einfach als Skalar zurueckgegeben.
Das ganze Zeug mit dem POST, LWP::WebRequest und das ganze ist einfach in der Funktion.
Wie soll ich's sonst machen?
Hallo,
Ich will damit erreichen, dass ich eine einfache Funktion WebPost habe, der ich als ersten Parameter die URL uebergebe, als zweiten Parameter den Hash mit den Formulardaten. Die HTML-Seite wird einfach als Skalar zurueckgegeben.
Das ganze Zeug mit dem POST, LWP::WebRequest und das ganze ist einfach in der Funktion.
Wie soll ich's sonst machen?
Danke ich habs schon :´-)
my %data = ( daten1 => 'asdaf', daten2 => 'Das ist der Testtext final' );
print &WebPost('https://www.server.com',
%data,
'www.server.com');
sub WebPost($;%;$;)
{
(...)
my $url = shift;
my $data = shift;
my $referer = shift;
(...)
$req = POST $url, $data;
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.