我有一个这样写的脚本:
if (!(-e "ARGV[0]"))
{
printf("\nThis file \"%s\" does not exist.\n\n", $ARGV[0]);
exit;
}
参数是什么" -e"在我的条件下意味着什么?
答案 0 :(得分:5)
-e
表示“存在文件”。您的代码检查名为"ARGV[0]"
的文件,如果该文件不存在,则会打印到控制台。但是,我认为你犯了一个错误并想检查从命令行传入的文件?
如果是,请将if (!(-e "ARGV[0]"))
更改为if (!(-e $ARGV[0]))
。这意味着如果$ARGV[0]
中指定的文件不存在,则打印错误。 @ARGV
表示从命令行传入的内容 - 因此如果您运行perl myscript.pl hello.txt new.txt
,$ARGV[0]
将为hello.txt
,$ARGV[1]
将为new.txt
因此,如果从命令行以参数0的形式传入非现有文件,则此代码会输出错误,因此hello.txt
不存在。
if (!(-e $ARGV[0]))
{
printf("\nThis file \"%s\" does not exist.\n\n", $ARGV[0]);
exit;
}
else{
printf("That file exists!");
}
如果您确实要检查是否存在名为"ARGV[0]"
的文件,我会道歉。