私は非常にPerlに慣れています(ただ1つのYoutubeビデオを見ました)。スクリプトを作成して、.csvファイルを2つ取り、一緒に追加して新しい.csvファイルを作成するスクリプトを作成したいとします。追加されている2つの.csvファイルを変更する必要はありません。また、このスクリプトでは、マージするファイルとしてユーザー入力を受け入れるようにしたい(今は2つの追加.csvファイルが同じディレクトリにあります)。閉じたファイルハンドルのprint()
私が得続けるエラーは次のとおりです。閉じたファイルハンドルのOUT(1行目)(#2)(W閉じる)印刷中のファイルハンドルは、今までに閉じられています。あなたのコントロールフローを確認してください
しかし私は決してcloseコマンドを使用していないので、私のファイルハンドルはどのように閉じていますか?
use strict;
use warnings;
use diagnostics;
use feature 'say';
use feature "switch";
use v5.22;
# Ask for Base File
say "What is the base file you want to use?";
my $base_file = <STDIN>;
chomp $base_file;
open (BASE, '<', $base_file) or die "Couldn't find the base file you are entered: $base_file ";
# Ask for Append File
say "What is the file you want to append to the base file?";
my $append_file = <STDIN>;
chomp $append_file;
open (APPEND, '<', $append_file) or die "Couldn't find the append file you are entered: $append_file ";
# Create new File with new name
say "What is the name of the new file you want to create?";
my $new_file = <STDIN>;
open (OUT, '>>', $new_file);
chomp $new_file;
while(my $base_line = <BASE>) {
chomp $base_line;
print OUT $base_line;
}
注: '' v5.22を使用すると '' say''と 'switch'の機能が有効になります(' use feature ... 'の必要はありません)。 。 (2)[機能スイッチ](https://perldoc.perl.org/feature.html#The-%27switch%27-feature)は実験的なものとみなされ、将来的には変更が行われる可能性がほぼあります。 (3) '$ base_line'を' chomp $ 'して改行がないようにしてから、改行なしで 'print'します。したがって、これらの「線」はすべて1つの大きな線になります。 'chomp'を' say'(改行を追加するため)に使うか、 'chomp'と' print'をしないでください。 – zdim