Ваш первый фрагмент кода эквивалентен:
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);