我的perl脚本有点问题。我试图将HTML文件的内容转换为CSV。这部分不是问题。我正在为2个HTML文件做同样的事情,并期待2个CSV文件。除了1件事外,一切都很好。第一个CSV文件非常好,但第二个CSV文件包含第一个PLUS文本的第二个文本....我粘贴了我的脚本并删除了数据提取和HTML下载的行。所以下面的其余部分是纯文件处理...我在这里失踪什么?文件关闭不起作用
#!/usr/bin/perl
..
my $saveFileName = "x";
my $saveCsvName = "x";
sub parse_page{
open(CSV, ">".$saveCsvName);
my $tree = HTML::TreeBuilder->new();
$tree->parse_file($saveFileName);
my @adds = $tree->look_down(sub { lc($_[0]->attr('class')) eq 'ad_row' });
foreach $add(@adds){ print CSV $stuff."\n"; } #do stuff and print
$tree->delete;
close(CSV);
}
# Main -----------------------------------------------------
$saveFileName = "A_".$vandaag.".html";
$saveCsvName = "A_".$vandaag.".csv";
parse_page();
$saveFileName = "B_".$vandaag.".html";
$saveCsvName = "B_".$vandaag.".csv";
parse_page();
你在该程序中使用'严格'和'使用警告'吗?我想你不会。在顶部添加这两个,然后修复它们会给你的所有错误(比如'foreach'中的未声明'$ add'),然后用更新后的程序编辑你的问题。 – simbabque
如果您无法确定您的字段数据中不会存在字段或行分隔符,请使用[Text :: CSV_XS](http://search.cpan.org/perldoc/Text::CSV_XS)编写CSV数据。 – reinierpost
我删除了双引号,因为它与我的问题无关。此外,CSV文件的内容也非常好。唯一的问题是第二个文件也有第一个文件的内容... – hetOrakel