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()を使用せずに (2 回!)チェックし<>ます。は?
  3. ファイル ハンドル を閉じFILEましたが、そのようなファイル ハンドルを開いたことはありません。
  4. FILE別のファイル ハンドルが eof に達したかどうかを確認した後、ファイル ハンドルを閉じます。
  5. getあなたのコードは何もしないと言いましたが、undef 以外のものが返されたかどうかをわざわざチェックしませんでした。

ちなみにいつも使ってますuse strict; use warnings;。やったかどうかわからない。

于 2013-05-11T11:41:46.833 に答える