包含数组引用的Perl LWP匿名数组引用作为具有单个元素的数组出现

时间:2013-12-24 00:30:19

标签: arrays perl lwp-useragent

我遇到了一个小问题。我正在使用LWP :: useragent并发布到另一个脚本。在该脚本中,我在json字符串上执行一些逻辑,并在匿名数组中传递多个文件。一切都很顺利,直到我试图将我传入的多个文件推送到一个数组中并将其作为匿名数组中的数组引用传递。

open (IMAGE, "./flower.jpg") or die "$!";
open (IMAGE2, "./fw4.pdf") or die "$!";

$raw_string1 = do{ local $/ = undef; <IMAGE>; };
$raw_string2 = do{ local $/ = undef; <IMAGE2>; };


my @file_array;

push(@file_array, $raw_string1);
push(@file_array, $raw_string2);

my $array_ref = \@file_array;

my $data = [json_string => $json, file_array => $array_ref];
my $ua = LWP::UserAgent->new;
$res = $ua->request(POST($url, $data));

在catch脚本上,我读到了从匿名传递给哈希的params。我能够访问json字符串传递,而不会出现如下问题:

my $json_post = $params{'json_string'};

然后我解码它并按照它做我想做的一切都很好。所以我想我可以访问数组ref:

 my $array_ref = $params{'file_array'};
 my @array = @$array_ref;

也尝试了

my @array = @{$array_ref};

1 个答案:

答案 0 :(得分:2)

您只能通过套接字发送字节流。必须将其他任何内容序列化为字节流并在远程端进行反序列化。

您选择使用application / x-www-form-urlencoded协议进行序列化。它只能序列化字符串的键值对。然而,您尝试传递引用

您需要以服务器期望的方式将数组内容序列化为字符串。