Perl PHP::Serialization在尝试序列化HTTP::Response时出错
尝试序列化时出错 下面是一个例子。有什么提示吗Perl PHP::Serialization在尝试序列化HTTP::Response时出错,perl,serialization,Perl,Serialization,尝试序列化时出错 下面是一个例子。有什么提示吗 #!/usr/bin/perl -w use strict ; use warnings ; use LWP ; use PHP::Serialization qw(serialize unserialize); my $url = 'http://stackoverflow.com/' ; my $ua = LWP::UserAgent->new() ; my $page = $ua->get($url) ; pri
#!/usr/bin/perl -w
use strict ;
use warnings ;
use LWP ;
use PHP::Serialization qw(serialize unserialize);
my $url = 'http://stackoverflow.com/' ;
my $ua = LWP::UserAgent->new() ;
my $page = $ua->get($url) ;
print "HTML page is ". length($page)." bytes long.\n" ;
print $page ; print "\n" ;
my $buffer ;
eval { $buffer = serialize($page); } ; die $@ if $@ ;
open FH, '>stored.dat' or die "Cannot create store file $!" ;
binmode FH ;
print FH $buffer ;
close FH ;
执行结果如下:
HTML page is 30 bytes long.
HTTP::Response=HASH(0x901f110)
Not a HASH reference at /usr/local/share/perl/5.10.1/PHP/Serialization.pm line 454.
感谢您提供的所有可能的解决方案 当你这样做的时候
my $page = $ua->get($url);
您将得到一个HTTP::Response
对象。您需要调用$response->content
方法来获取响应的内容
my $response = $ua->get($url);
die "didn't get a page: ".$response->status_line."\n" unless $response->is_success;
my $page = $response->content;
错误消息抱怨PHP::Serialize不知道如何序列化不是普通perl哈希/数组引用(在本例中可能是代码引用)的内容
my $page = $ua->get($url);
您将得到一个HTTP::Response
对象。您需要调用$response->content
方法来获取响应的内容
my $response = $ua->get($url);
die "didn't get a page: ".$response->status_line."\n" unless $response->is_success;
my $page = $response->content;
错误消息抱怨PHP::Serialize不知道如何序列化不是普通perl哈希/数组引用(在本例中可能是代码引用)的内容。
HTTP::Response
和/或HTTP::Request
对象(我不记得是哪个)有一个通常是。该对象是一个受祝福的标量引用
环顾报告错误的行,似乎PHP::Serialization
认为所有对象都是基于哈希的。因此,当它遇到一个标量引用对象时,它会阻塞
注:
=head1待办事项
支持不同的对象类型
我不知道序列化格式是否能够建议修补程序,但修复程序如下所示:
elsif ( $type eq 'obj' ) {
my $class = ref($val);
$class =~ /(\w+)$/;
my $subclass = $1;
my $reftype = reftype $val;
if ($reftype eq 'HASH') {
# blessed hash serialization
}
elsif ($reftype eq 'ARRAY') {
# blessed array serialization
}
elsif ($reftype eq 'SCALAR') {
# blesssed scalar serialization
}
elsif ($reftype eq 'CODE') {
# blessed coderef serialization
}
elsif ($reftype eq 'GLOB') {
# blessed globref serialization
}
else {
# etc etc
}
其中
reftype
来自。事实上,如果只在遇到不受支持的类型时发出咯咯声,填充这些分支或将其转换为调度表将非常有用。HTTP::Response
和/或HTTP::Request
对象(我不记得是哪个)具有成员\u uri
,通常是一个。该对象是一个受祝福的标量引用
环顾报告错误的行,似乎PHP::Serialization
认为所有对象都是基于哈希的。因此,当它遇到一个标量引用对象时,它会阻塞
注:
=head1待办事项
支持不同的对象类型
我不知道序列化格式是否能够建议修补程序,但修复程序如下所示:
elsif ( $type eq 'obj' ) {
my $class = ref($val);
$class =~ /(\w+)$/;
my $subclass = $1;
my $reftype = reftype $val;
if ($reftype eq 'HASH') {
# blessed hash serialization
}
elsif ($reftype eq 'ARRAY') {
# blessed array serialization
}
elsif ($reftype eq 'SCALAR') {
# blesssed scalar serialization
}
elsif ($reftype eq 'CODE') {
# blessed coderef serialization
}
elsif ($reftype eq 'GLOB') {
# blessed globref serialization
}
else {
# etc etc
}
其中
reftype
来自。事实上,如果只在遇到不支持的类型时发出嘎嘎声,填写这些分支或将其转换为调度表将非常有用。顺便说一句,文档上的注释与的首页类似。顺便说一句,文档上的注释与的首页类似。