スクリプト内の2つのファイルの内容を比較したいとします。これを行うために、ファイルを配列にロードしています。最初のファイルには、2番目のファイルで検索している固有の名前が含まれています。問題は比較に関連していませんが、結果をファイルに保存する必要があります。名前には配列@unique_names
の値が含まれています。比較後にファイルを作成する行にエラーが表示されます。 $file_name
内容の 例:エラーは言う:test.pl線71で無効な引数、ライン6 が、これは全体のスクリプトではありませんだけカットしますのでご注意くださいprint $outputFolder . $ file_name
のPT_FCT_Sales_20161003.out
と結果が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";
}
}
}
EDITですその問題に関連してオフになります。
問題の説明は完全にわかりません。あなたはどんなエラーを出していますか?また、_please_ '警告を使う;'(と 'use strict;') - それにスカラー '$ unique_names [$ i] 'である_slice_' @unique_names [$ i] 'に対して警告されます。 。 – zdim
なぜあなたはifステートメント内でifステートメントをやっていますか?また、以前にforeachをやった同じ配列に対してもう一度foreachを実行していますか?不要なループを作成しています。 '$ outputfolder'は一度だけ使われますか? '@uniquenames [$ i]は' $ uniquenames [$ I] 'として書くことができます@filesは一度だけ使われますが、残りの部分はどこですか? –
@zdim私は 'strict'と' warnings'を使っていますが、私は警告を無視しました。修正後も、それはまだ動作しません。私のポストへのアップデートをお読みください – Dodzik