我想比較腳本中兩個文件的內容。爲了做到這一點,我正在將文件加載到數組中。第一個文件包含我在第二個文件中搜索的唯一名稱。問題與比較無關,但後來我必須將結果保存到文件中,該名稱包含來自@unique_names
數組的值。錯誤出現在比較後我創建文件的位置。的$file_name
內容 例子:PT_FCT_Sales_20161003.out
和print $outputFolder . $ file_name
結果是c:\Strawberry\PT_FCT_Sales_20161003.out
保存文件時Perl無效參數
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. 請注意,這不是整個腳本,只是一個切與問題有關。
問題的描述對我來說完全不清楚。你遇到了什麼錯誤?另外,_please_'使用警告;'(和'use strict;') - 用它來警告_slice_'@unique_names [$ i]',它應該是標量'$ unique_names [$ i]' 。 – zdim
你爲什麼要在if語句中做一個if語句,然後又是你之前做過foreach的同一個數組的foreach?您正在創建不必要的循環。 '$ outputfolder'只使用一次? '@uniquenames [$ i]可以寫成'$ uniquenames [$ I]'@files只能使用一次,腳本的其餘部分在哪裏? –
@zdim我使用'strict'和'warnings',但我忽略了警告。更正後,它仍然不起作用。請閱讀更新到我的文章 – Dodzik