【发布时间】:2019-08-18 08:31:51
【问题描述】:
当我当时运行程序时,我只给出一个目录名,我希望目录中的所有文件都被解析?这是我的代码
my @indexFiles= "www/I.html";
my @rdata = readFile("@indexFiles");
sub readFile{
my $somefile = $_[0];
my @links = ($somefile);
my $p = HTML::TokeParser->new($somefile) || die "Can't open: $!";
while (my $token = $p->get_tag("img","a")){
my $currentlink = $token->[1]{href} || $token->[1]{src};
my $finalLink= $directory."/".$currentlink ;
if($currentlink =~ /\.html$/){
my @data = readFile($finalLink);
push @links,@data;
} else{
push @links,$finalLink;
}
}
return @links;
}
在www 文件夹中,我有 3 个 HTML 文件,2 个文件夹。
my @indexFiles= "www/I.html" 在这一行中,我传递了特定的路径名和文件。我不想传递这个名字。取而代之的是,它将自动选择。
例如:当我运行我的程序perl c.pl www。它应该是解析所有文件。
我给特定的文件名I.html 然后它会找到 img 和一个标签。
【问题讨论】:
-
不清楚您要的是什么
-
您似乎正在尝试为
HTML::TokeParser提供文件名。请澄清您要做什么?为什么要在没有文件名的情况下调用它? -
@HåkonHægland 我想要,因为在另一个文件夹中,无论有什么 .html 文件,我的程序都应该运行。为那个文件夹。
-
所以你的问题与解析或 HTML::TokeParser 无关,实际上是关于确定路径是否引用目录,如果它获取目录中的文件列表引用目录?如果我是正确的,您能否编辑您的帖子以提出您的实际问题?
-
您需要编写代码来确定它是否被赋予了文件名或目录名,然后采取相应的行动。如果是目录,则查找所有 HTML 文件,然后处理它们。如果是文件,则只处理该文件。正如 ikegami 所说,这与您实际处理这些文件的问题无关。
标签: perl parsing html-parsing html-lists token