Perl 将打印保存为变量

发布于 2025-01-07 21:16:53 字数 304 浏览 0 评论 0原文

我有一个命令

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);

不起作用。

有什么想法吗?

I have a command

print $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);

that prints out the exact link I would like to save as a variable. Although when I try to do

my $link = $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);

it does not work.

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冬天旳寂寞 2025-01-14 21:16:53

如果您知道 $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);

If you know that $mech->find_link_dom(text_regex => qr/pdf/i) returns exactly one element, then you can write:

my $link = [$mech->find_link_dom(text_regex => qr/pdf/i)]->[0]->{href} . "\n";

If it can return multiple elements — or zero elements — then maybe you mean this:

my $link;
$link .= $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
清欢 2025-01-14 21:16:53

您的第一个代码片段相当于:

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);

Your first code snippet is equivalent to:

for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
    print $_->{href} . "\n"
}

The second is equivalent to:

for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
    my $link = $_->{href} . "\n";
}

So, the $link variable is local to the for block, and is not visible outside of that block. It will work if you first declare the variable outside of the block:

my $link;

for $_ ($mech->find_link_dom(text_regex => qr/pdf/i)) {
    $link = $_->{href} . "\n";
}

Or, using the short form as in your code:

my $link;

$link = $_->{href} . "\n" for $mech->find_link_dom(text_regex => qr/pdf/i);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文