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

Fel*_*ins -2 parameters perl if-statement

我有一个这样写的脚本:

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

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

ome*_*ell 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!");
}
Run Code Online (Sandbox Code Playgroud)

如果您确实要检查是否存在名为的文件,我深表歉意"ARGV[0]".