我想在我的脚本中比较两个文件的内容。为了做到这一点,我将文件加载到数组中。第一个文件包含我在第二个文件中搜索的唯一名称。问题与比较无关,但是我必须将结果保存到文件中,该名称包含来自@unique_names
数组的值。错误出现在比较后我正在创建文件的行中。
$file_name
内容的示例:PT_FCT_Sales_20161003.out
和print $outputFolder . $ file_name
的结果为c:\Strawberry\PT_FCT_Sales_20161003.out
foreach my $file (@Files){
if ($file =~ /out$/i){
if ($file =~ /PT_FCT_Sales_/i){
open(my $INFILE, "<", $file) or die $!;
@lines = <$INFILE>;
foreach (my $i = 0; $i < @unique_names; $i++) {
my $file_name = join('', @unique_names[$i]);
#print $file_name;
my @data;
foreach $line (@lines) {
if ($line =~ @unique_names[$i] ) {
push (@data, $line);
}
}
open(my $OUTFILE, ">>", $outputFolder . $file_name) or die $!; #error appears here
print $OUTFILE @data;
close $OUTFILE;
}
close $INFILE or die "Can't close input file";
}
}
}
编辑:错误说:test.pl第71行第6行的参数无效。 请注意,这不是整个脚本,只是与问题相关的截止。
答案 0 :(得分:0)
这是一个稍好的解决方案。未经测试。所以我会继续编辑和修复。请提供$ outputfolder定义的位置。
foreach my $file (@Files){
if ($file =~ /^PT_FCT_Sales.*\.out$/i){
open(my $INFILE, "<", $file) or die $!;
@lines = <$INFILE>;
foreach (my $i = 0; $i < @unique_names; $i++) {
my $file_name = join('', $unique_names[$i]);
my @data;
while (<$INFILE>) {
if ($line =~ $unique_names[$i] ) {
push (@data, $line);
}
}
open(my $OUTFILE, ">> $outputFolder.$file_name") or die $!; #error appears here
print $OUTFILE @data;
close $OUTFILE;
}
close $INFILE or die "Can't close input file";
}
}