根據「perltrap」中C程序員的章節以及我所搜索的所有內容,我應該使用「$ 0」來獲取Perl中的程序名稱。然而,當我運行下面的 「來電顯示」 腳本:如何在perl中獲取程序名稱
#!/usr/bin/perl
exec{"./called"}("name", "arg");
本身調用下面的 「所謂的」 腳本:
#!/usr/bin/perl
print("$0 $ARGV[0]\n");
我得到 「./called arg
」,而不是!
如果我把下面的 「called.c」 程序,而不是從 「主叫方」:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%s %s\n", argv[0], argv[1]);
return 0;
}
我得到預期 「name arg
」。
有沒有辦法獲得腳本名稱,而不是路徑?
不知道我明白你的觀點。如果你從Perl中調用'printf'%s%s \ n「,$ ARGV [0],$ ARGV [1]',你還會得到程序的第一個和第二個參數。我相信如果你試圖從C中「調用」字符串「被調用」,你會得到和Perl一樣的結果。你認爲你的代碼應該做什麼? – TLP 2014-12-03 09:56:17
你想完成什麼? $ 0指的是命令行參數 - 因爲你用'./ called'的'command'開始了你的腳本,那麼這就是第一個參數。 – Sobrique 2014-12-03 10:00:07
不,我試過你的代碼,我得到的是「'arg'」,而不是''name arg'「。看到我對M42的回答,瞭解我想要做的事情。 – airman 2014-12-03 10:07:46