我的情况中的参数是什么意思?

时间:2018-04-02 18:07:59

标签: perl if-statement parameters

我有一个这样写的脚本:

if (!(-e "ARGV[0]"))
{
     printf("\nThis file \"%s\" does not exist.\n\n", $ARGV[0]);
     exit;
}

参数是什么" -e"在我的条件下意味着什么?

1 个答案:

答案 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]"的文件,我会道歉。