[英]Perl save print as variable
我有一個命令
print $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
打印出我想另存為變量的確切鏈接。 雖然當我嘗試去做
my $link = $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
這是行不通的。
有什么想法嗎?
如果您知道$mech->find_link_dom(text_regex => qr/pdf/i)
返回一個元素,則可以編寫:
my $link = [$mech->find_link_dom(text_regex => qr/pdf/i)]->[0]->{href} . "\n";
如果它可以返回多個元素(或零個元素),那么您可能的意思是:
my $link;
$link .= $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
您的第一個代碼段等效於:
for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
print $_->{href} . "\n"
}
第二個等效於:
for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
my $link = $_->{href} . "\n";
}
因此, $link
變量for
塊而言是本地的,在該塊之外不可見。 如果您首先在塊外聲明變量,它將起作用:
my $link;
for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
$link = $_->{href} . "\n";
}
或者,使用代碼中的簡寫形式:
my $link;
$link = $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.