从网上抓取了一些数据。我在结构$ res中得到了类似这样的数据(见下文 - 使用datadumper)。 $ res是一个哈希数组,带有一个哈希数组pageurls
想要从pageurl获取lastpage,这始终位于最后一个pageurl数组中。 sub lastpage有两个参数页面(当前页面)和数组页面。
$res = {
'pageurls' => [
bless( do{\(my $o = 'http://digitalarkivet.arkivverket.no/finn_kilde?s=&fra=&til=&ka%5B0%5D=1&kt%5B0%5D=MANN&kt%5B1%5D=MINI&kt%5B2%5D=KLOK&kt%5B3%5D=FREG&k%5B0%5D=1820&k%5B1%5D=1843&k%5B2%5D=1804&page=1')}, 'URI::http' ),
bless( do{\(my $o = 'http://digitalarkivet.arkivverket.no/finn_kilde?s=&fra=&til=&ka%5B0%5D=1&kt%5B0%5D=MANN&kt%5B1%5D=MINI&kt%5B2%5D=KLOK&kt%5B3%5D=FREG&k%5B0%5D=1820&k%5B1%5D=1843&k%5B2%5D=1804&page=2')}, 'URI::http' )
],
'page' => '1',
'comment' => " S\x{f8}ket ditt gav 74 treff: "
}
my $lastpage = &lastPage($res->{'page'},$res->{'pageurls'});
sub lastPage {
my @pageurls=$_[1];
if (@pageurls) {
my @bits= split /page=/,$pageurls[0][-1];
my $rv=$bits[-1];
return $rv
} else {
return $_[0];
}
}
#Looking in debugger I see the following structure for @pageurls
#[0]
# ->[0] http....
# ->[1] http....
如何将pageurls作为一维数组传递,然后再使用它?
答案 0 :(得分:1)
问题在于:
my @pageurls=$_[1];
$_[1]
是一个数组引用,因此您必须取消引用它才能获得数组。
my @pageurls = @{ $_[1] };
然后,您可以使用$pageurls[-1]
访问最后一个。
如果您想将pageurl作为列表传递,可以在调用中取消引用它:
my $lastpage = lastPage($res->{page}, @{ $res->{pageurls} });
然后,您必须更改子例程的参数处理:
sub lastPage {
my $page = shift; # Remove the first member from @_.
my @pageurls = @_;