0

ここでばかげた質問です。私は Perl を初めて使用し、HTML: TableExtract を使用してオンラインでデータを抽出しようとしています。Web ページから数値を取得しましたが、それらを txt ファイルに出力する方法がわかりません。ファイルを開こうとしましたが、成功しませんでした。ここに私が使用するコードがあります。ありがとう。

#!/usr/bin/perl
use Encode qw(decode);
use Encode;
use Encode::HanExtra;
use Encode::HanConvert;
use strict;
use warnings;


chdir("C:/perlfiles/test") || die "cannot cd ($!)";

my $file = "tokyo.html";
use HTML::TableExtract;
open my $outfile, '>', "tokyo.txt" or die 'Unable to create file';

my $label = 'by headers';
 my $te = HTML::TableExtract->new(headers => [qw(number city)]);

$te->parse_file($file);

foreach my $ts ($te->tables) {
   print "Table (", join(',', $ts->coords), "):\n";
   foreach my $row ($ts->rows) {
      print $outfile join(",", @$row),"\n";
   }
}

close $outfile;

なにが問題ですか?ありがとう。

4

1 に答える 1

0

>>の代わりに使用し>ます。>は毎回最後のファイルを上書きするため、最後の for ループ反復で値が返されない場合は、空のファイルを取得することになります。>>既存のファイルの に追加するためEOF、以前に書き込まれたデータが保持されます。

open (OUT,'>>tokyo.txt') or die 'Unable to create file';

したがって、このようなものが機能する可能性があります。

open (OUT,'>>tokyo.txt') or die 'Unable to create file';
....
....
foreach my $row ($ts->rows) {
      print OUT join(",", @$row) . "\n";
   }
....
close OUT;

また、ファイル ハンドルが正しくありませんmy $outfile。ファイルハンドルは、使用されるファイルハンドルで外部ファイルへの接続を「ラベル付け」することになっています。あなたの場合$outfileは変数であり、値が含まれていません! したがって、ラベルがないため、ファイルは開きません。OUT(私がしたように)などを使用して、perlの外部ファイルへの接続に目立つようにラベルを付ける必要がOUTFILEあります。このファイルハンドルをコード全体で使用して、ファイルを書き込み、読み取り、閉じます。

于 2012-08-02T20:58:16.950 に答える