如何使用perl从我的文件中删除数字链接?

时间:2017-05-26 05:03:48

标签: perl

以下是我从堆栈溢出网站研究的代码部分,并尝试对我的代码实现相同的代码。但是我没有得到预期的代码。

在代码中,我尝试使用perl模块HTML :: TreeBuilder从我的文件中删除数字的href链接。

这是我的子程序的一部分,我试图删除所有数字的超链接。

sub process_file
{
print "enter";
my ($files)=@_;
print "******$files**********";
use HTML::TreeBuilder;
my $root = HTML::TreeBuilder->new_from_file($files);
foreach my $a ($root->find_by_tag_name('a')) {
    if ($a->attr('href') =~ /^\d+/) {
       $a->replace_with_content($a->as_text);
#print $a;
    }
}
print $root->as_HTML(undef, "\t");
}

代码说明:

1.这个子程序用于删除文件中的超链接。在我的文件中,所有数字都是超链接的。所以我试图删除它。

2.Foreach正在寻找href标签。

3.接下来如果条件我试图匹配文件中的数字。

输入文件摘要:version*.html

1 个答案:

答案 0 :(得分:0)

您的代码似乎运行正常。唯一缺少的是您没有将修改后的内容写回文件。 PFB更新的代码:

use strict;
use warnings;
use HTML::TreeBuilder;

print "enter";
my ($files)= "abc.html";
print "******$files**********\n";
my $FileFH;
my $root = HTML::TreeBuilder->new_from_file($files);
foreach my $a ($root->find_by_tag_name('a')) {
    if ($a->attr('href') =~ /^\d+/) {
       $a->replace_with_content($a->as_text) or die "Cannot replace";
    }
}
print $root->as_HTML(undef, "\t");

open($FileFH,'>',$files);
print $FileFH $root->as_HTML(undef, "\t");
print "File Written successfully";