2012-04-11 8 views
0

Hier ist Abschnitt des Codes und ich versuche, ganze Array mit LWP POST, aber Server empfängt nur die erste Zeile des Arrays (0 Index), während andere nicht an den Server gesendet werden, bitte Anleitung, was ich falsch machePOST-Array zu LWP: nur der erste Eintrag wird gepostet

$data_post[0] = "text1"; 
$data_post[1] = "text2"; 
$data_post[2] = "texxt3"; 
$data_post[3] = "text4"; 
$data_post[4] ="text5"; 
my $ua= LWP::UserAgent->new(); 
my $response = $ua->post($url, { 'istring' => @data_post}); 

my $content = $response->decoded_content(); 
my $cgi = CGI->new(); 
print $cgi->header(), $content; 

Antwort

6

Sie können ein Array nicht einem Hash-Schlüssel zuweisen, nur ein Skalar. Ihr Versuch, das Array erweitern und sende diese:

{ "istring" => "text1", "text2" => "texxt3", "text4" => "text5" } 

ein Array ref stattdessen die Verwendung durch den "take a reference" Operator vor dem Array setzen:

{ istring => \@data_post } 
+2

Dies sollte die akzeptierte Antwort sein. –

+0

@briandfoy - Brian, ich wundere mich nicht, dass du nochmal gegen mich stimmst (stackoverflow) auf der anderen antworte, welches OP akzeptiert. Wenn Sie sich meine Antwort genauer ansehen würden, würden Sie sehen, dass meine erste Version (vor dem Bearbeiten/Aktualisieren) den Code '{istring => \ @data_post}' ebenfalls hat, aber OP behauptet, dass es nicht für ihn funktioniert , dann habe ich eine Lösung gefunden, die OP benötigt. Also ich glaube, meine Antwort sollte (und wird) als Antwort akzeptiert werden. Hassen Sie mich - gehen Sie voran und laufen Sie downvotes auf allen meinen Pfosten, die Sie finden ... –

+3

Ich denke nicht, dass der OP den richtigen Code laufen ließ. Da du deine Antwort nicht mit Wörtern erklärst, ist es für einen Neuling schwierig, die Änderung eines einzelnen zu erkennen. Wenn Sie in Ihren Antworten so ausführlich waren, sind Sie in Ihren Trolling-Kommentaren, Sie hätten nicht so viele Probleme wie Sie. –

-2

[aktualisiert]

#!/usr/bin/perl 

use strict; 
use warnings; 
use LWP::UserAgent; 
use CGI; 

my @data_post; 

$data_post[0] = "text1"; 
$data_post[1] = "text2"; 
$data_post[2] = "text3"; 
$data_post[3] = "text4"; 
$data_post[4] = "text5"; 

my $url = '...'; 

my $ua = LWP::UserAgent->new(); 
my $response = $ua->post($url, { 'istring' => join('+', @data_post) }); 

my $content = $response->decoded_content(); 
my $cgi = CGI->new(); 

print $cgi->header(), $content; 
+0

danke, aber ich benutze genau den gleichen Code immer noch nur letzte Element des Arrays wird gepostet – neo

+0

Versuchen Sie '{'istring' => Join ('+', @data_post)}' statt –

+0

Die Antwort wird basierend auf meinem Kommentar oben aktualisiert . –