簡體   English   中英

Perl將打印另存為變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM