Perl 文件关闭不工作
我的perl脚本有点问题。我正在尝试将HTML文件的内容转换为CSV。那部分不是问题。我对2个HTML文件做了完全相同的事情,并期望得到2个CSV文件。除了一件事,一切都很好。第一个CSV文件非常好,但第二个CSV文件包含第一个文件的所有文本以及第二个文件的文本。。。。我粘贴了我的脚本,删除了用于数据提取和HTML下载的行。下面剩下的部分是普通文件处理。。。我在这里错过了什么Perl 文件关闭不工作,perl,csv,Perl,Csv,我的perl脚本有点问题。我正在尝试将HTML文件的内容转换为CSV。那部分不是问题。我对2个HTML文件做了完全相同的事情,并期望得到2个CSV文件。除了一件事,一切都很好。第一个CSV文件非常好,但第二个CSV文件包含第一个文件的所有文本以及第二个文件的文本。。。。我粘贴了我的脚本,删除了用于数据提取和HTML下载的行。下面剩下的部分是普通文件处理。。。我在这里错过了什么 #!/usr/bin/perl .. my $saveFileName = "x"; my $saveCsvName
#!/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帮助我删除了所有警告。这解决了问题。我展示了这项更改,因为它(对我来说)很难修复。