0

这里是一个愚蠢的问题。我是 Perl 的新手,正在尝试使用 HTML: TableExtract 在线提取一些数据。我从网页上获得了数字,但不知道如何将它们打印到 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(如我所做的)或OUTFILE等之类的东西突出地标记 perl 与外部文件的连接,并在代码中使用此文件句柄来编写、读取关闭文件等。

于 2012-08-02T20:58:16.950 回答