Perl 文件关闭不工作

Perl 文件关闭不工作,perl,csv,Perl,Csv,我的perl脚本有点问题。我正在尝试将HTML文件的内容转换为CSV。那部分不是问题。我对2个HTML文件做了完全相同的事情,并期望得到2个CSV文件。除了一件事,一切都很好。第一个CSV文件非常好,但第二个CSV文件包含第一个文件的所有文本以及第二个文件的文本。。。。我粘贴了我的脚本,删除了用于数据提取和HTML下载的行。下面剩下的部分是普通文件处理。。。我在这里错过了什么 #!/usr/bin/perl .. my $saveFileName = "x"; my $saveCsvName

我的perl脚本有点问题。我正在尝试将HTML文件的内容转换为CSV。那部分不是问题。我对2个HTML文件做了完全相同的事情,并期望得到2个CSV文件。除了一件事,一切都很好。第一个CSV文件非常好,但第二个CSV文件包含第一个文件的所有文本以及第二个文件的文本。。。。我粘贴了我的脚本,删除了用于数据提取和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();

好的,在添加
use strict
use warnings
之后,我不得不声明一些我忘记的变量(在
foreach
中的
$add
只是其中一个好的,在添加
use strict
use warnings
之后,我不得不声明一些我忘记的变量(在
foreach
中的
$add
只是其中的一个,您在该程序中有
使用严格的
使用警告的
吗?我想您没有。将这两个添加到顶部,然后修复它们将给您带来的所有错误(就像
foreach
循环中未声明的
$add
)然后,请用更新的程序提问。如果您不能确定字段数据中永远不会有字段或行分隔符,请使用来写入CSV数据。我删除了双引号,因为它与我的问题无关。而且CSV文件的内容也非常好。唯一的问题是第二个文件的内容也是对于第一个文件…很公平。但是请使用strict和warnings来运行它。否则这将是猜测。您在该程序中有
使用strict
使用warnings
吗?我想您没有。将这两个添加到顶部,然后修复它们将给您带来的所有错误(就像
foreach
循环中未声明的
$add
)然后,请用更新的程序提问。如果您不能确定字段数据中永远不会有字段或行分隔符,请使用来写入CSV数据。我删除了双引号,因为它与我的问题无关。而且CSV文件的内容也非常好。唯一的问题是第二个文件的内容也是对于第一个文件…足够公平。但是请让它运行时带有严格和警告。否则这将是猜测。关于为什么“使用严格;使用警告”的一个有价值的教训,我认为是很好的做法!)嗯……这项更改除了消除虚假警告外,什么也做不了。这是您的其他更改之一。您是对的。使用strict/warnings帮助我删除了所有警告。这解决了问题。我展示了这项更改,因为它(对我来说)很难做到我认为,关于为什么“严格使用;使用警告”的一个宝贵教训是良好的实践!)嗯……这项更改除了消除虚假警告外,什么也做不了。这是您的其他更改之一。您是对的。使用strict/warnings帮助我删除了所有警告。这解决了问题。我展示了这项更改,因为它(对我来说)很难修复。