我正在开发一个程序,该程序需要用户输入两个文件名。不幸的是,如果用户不遵循指定的输入格式,程序很容易中断。我想编写代码来提高它对这些类型错误的弹性。当你看到我的代码时你就会明白:
# 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;
显然,如果用户输入了错误的文件名类型(.tab 文件而不是 .txt 或 .seq 而不是 .qseq),则此代码运行可能会出错。我想要可以进行某种检查的代码,以查看用户是否输入了适当的文件类型。
另一个可能破坏代码的错误是如果用户在文件名前输入了太多空格。例如:sample1.qseq,(这里想象6个空格)barcode.txt(注意逗号后面的很多空格)
另一个例子:(假设这里有6个空格)sample1.qseq,barcode.txt(这次注意第一个文件名前的空格数)
我还想要可以删除多余空格的代码行,这样程序就不会中断。我认为用户输入必须采用以下格式:sample1.qseq、barcode.txt。用户输入必须采用这种格式,以便我可以正确地将文件名索引到数组中并稍后将它们移出。
感谢任何帮助或建议非常感谢!