无法调用方法" text"没有包或对象引用

时间:2018-02-14 12:54:49

标签: perl

以下是我的代码

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;没有包或对象引用。

1 个答案:

答案 0 :(得分:5)

在标量上下文中,grep返回列表中&#34;匹配&#34;的项目数。标准。因此,因为您的列表中只有一个项目,您的声明

$link = grep( /<a.*href=.*>/, $line )

会根据$link是否匹配正则表达式$line

/<a.*href=.*>/设置为1或0

然后你有

print $fh $link->text

调用1->text0-text,两者都没有意义