以下是我的代码
use warnings;
use LWP::Simple;
use WWW::Mechanize;
use WWW::Mechanize::Link;
my $mech = new WWW::Mechanize();
my $link = new WWW::Mechanize::Link();
my $file = 'source1.txt';
my $filename = 'links2.txt';
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
open my $info, $file or die "Could not open $file: $!";
while( my $line = <$info>) {
$link = grep(/<a.*href=.*>/,$line);
print $fh $link->text;
}
close $fh;
当我尝试运行时,我收到错误 无法调用方法&#34; text&#34;没有包或对象引用。
答案 0 :(得分:5)
在标量上下文中,grep
返回列表中&#34;匹配&#34;的项目数。标准。因此,因为您的列表中只有一个项目,您的声明
$link = grep( /<a.*href=.*>/, $line )
会根据$link
是否匹配正则表达式$line
/<a.*href=.*>/
设置为1或0
然后你有
print $fh $link->text
调用1->text
或0-text
,两者都没有意义