2 つのファイル名のユーザー入力を受け取るプログラムに取り組んでいます。残念ながら、ユーザーが指定された入力形式に従わない場合、プログラムは簡単に壊れてしまう可能性があります。この種のエラーに対する回復力を向上させるコードを書きたいと思っています。私のコードを見れば理解できるでしょう:
# Ask the user for the filename of the qseq file and barcode.txt file
print "Please enter the name of the qseq file and the barcode file separated by a comma:";
# user should enter filenames like this: sample1.qseq, barcode.txt
# remove the newline from the qseq filename
chomp ($filenames = <STDIN>);
# an empty array
my @filenames;
# remove the ',' and put the files into an array separated by spaces; indexes the files
push @filename, join(' ', split(',', $filenames))
# the qseq file
my $qseq_filename = shift @filenames;
# the barcode file.
my barcode = shift @filenames;
ユーザーが間違ったタイプのファイル名 (.txt の代わりに .tab ファイル、または .qseq の代わりに .seq) を入力すると、明らかに、このコードの実行でエラーが発生する可能性があります。ユーザーが適切なファイルの種類を入力したことを確認するために、何らかのチェックを実行できるコードが必要です。
コードを壊す可能性のある別のエラーは、ユーザーがファイル名の前にあまりにも多くのスペースを入力した場合です。例: sample1.qseq,(ここでは 6 つのスペースを想像してください)、barcode.txt (カンマの後に多数のスペースがあることに注意してください)
別の例: (ここでは 6 つのスペースを想像してください) sample1.qseq,barcode.txt (今回は、最初のファイル名の前のスペースの数に注意してください)
また、プログラムが壊れないように余分なスペースを削除できるコード行も必要です。ユーザー入力は次のような形式でなければならないと思います: sample1.qseq、barcode.txt。ファイル名を配列に適切にインデックス付けし、後でシフトアウトできるように、ユーザー入力はこの形式である必要があります。
助けや提案に感謝します。