0

我正在用 Perl 编写脚本,但我只是一个初学者。该程序下载 html 页面并尝试查找以标签为界的短语。我在下面附上了一个代码,当我检查它时,没有错误,但它什么也没做(没有打印出来)。所以请任何人都可以给我一些建议可能是什么问题?

open ':std', ':encoding(UTF-8)';

my $s = get("xxx.html");

foreach my $line (split(/\n/,$s)) {

  if (m,<>(.*?)<>,g) {

    if(eof()) {
        close(FILE);    }

     print "$1\n";
     last if eof();
        }    
}
4

2 回答 2

3

我确实发现了许多问题。

  1. if (//g)没有意义,并可能导致实际(微妙)问题。删除g.
  2. 您检查eof()(两次!)而从未使用过<>. 嗯?
  3. 您关闭了文件句柄FILE,但从未打开过任何此类文件句柄。
  4. FILE在检查不同的文件句柄是否达到 eof 后关闭文件句柄。
  5. 你说你的代码没有做任何事情,但你没有费心去检查是否get返回了 undef 以外的东西。

顺便说一句,始终使用use strict; use warnings;. 不确定你有没有。

于 2013-05-11T11:41:46.833 回答
0

您可以使用此处可用的 XML 模块(XML::Parser) 它抓取标签之间的文本。

于 2013-05-11T11:25:34.607 回答