一些东西:
Chomp 更改字符串,并返回chomped的字符数。在该输入行之后,chomp $master_testplan_conf
很可能是1
,因此您正在与1
空字符串进行比较。
你可以这样做:
chomp ( $master_testplan_conf = <> );
如果你想在一行上做所有事情。
这将读取您的输入并一步完成。此外,<>
操作员将从命令行获取文件,<>
并将成为命令行上第一个文件的第一行。如果您不想这样做,请使用<STDIN>
:
chomp ( $master_testplan_conf = <STDIN> );
您可能想要清理用户的输入。我至少会删除任何前导和结尾的空格:
$master_testplan_conf =~ s/^\s*(.*?)\s*$/$1/; # Oh, I wish there was a "trim" command!
这样,如果用户不小心按了几次空格键,您就不会选择空格。您可能还想测试文件是否存在:
if ( not -f $master_testplan_conf ) {
die qq(File "$master_testplan_conf" not found);
}
我还建议使用:
if ( not defined $master_testplan_conf or $master_testplan_conf eq "" ) {
为你的if
陈述。这将测试是否$master_test_conf
被实际定义,而不仅仅是一个空字符串。现在,这并不重要,因为用户必须至少输入一个\n
. $master_testplan_conf
漫步永远不会是空的。
但是,如果您决定使用Getopt::Long可能很重要。