用于文本工作的Perl程序

时间:2013-05-11 10:53:19

标签: perl

我正在用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();
        }    
}

2 个答案:

答案 0 :(得分:3)

我确实发现了很多问题。

  1. if (//g)毫无意义,可能导致实际(微妙)问题。删除g
  2. 您在不使用eof()的情况下检查<>(两次!)。啊?
  3. 您关闭文件句柄FILE,但您从未打开任何此类文件句柄。
  4. 在检查其他文件句柄是否已达到eof后,关闭文件句柄FILE
  5. 你说你的代码没有做任何事情,但你没有费心去检查get是否返回了除undef以外的其他内容。
  6. 顺便说一句,请始终使用use strict; use warnings;。不确定你是否做过。

答案 1 :(得分:0)

您可以使用here上提供的XML模块(XML :: Parser) 它抓取标签之间的文本。