我有一個perl(.pm)文件與多個子例程。我想要執行一個將一個參數作爲參數的子程序。我試過通過命令提示符執行Perl子例程?
perl /full_file_path/file_name.pm mySubRoutine myArgument
但是什麼都沒有返回。什麼是正確的格式?
我有一個perl(.pm)文件與多個子例程。我想要執行一個將一個參數作爲參數的子程序。我試過通過命令提示符執行Perl子例程?
perl /full_file_path/file_name.pm mySubRoutine myArgument
但是什麼都沒有返回。什麼是正確的格式?
如果你的Perl模塊目錄中的@INC
列表中的一個,那麼你可以寫
perl -Mfile_name -e 'mySubRoutine(myArgument)'
如果是在其他地方,那麼你需要添加的路徑,像
perl -M/full_file_path/file_name -e 'mySubRoutine(myArgument)'
和,如ysth
指出,如果模塊文件在開始時有package MyPackage
,那麼您可能需要將其添加到您的呼叫中,如
perl -M/full_file_path/file_name -e 'MyPackage::mySubRoutine(myArgument)'
但是在這種情況下,該文件應該被稱爲MyPackage.pm
,實際的命令將如下所示(請注意,與-M
參數一起使用時,沒有將.pm
附加到文件名。
perl -M/full_file_path/MyPackage -e 'MyPackage::mySubRoutine(myArgument)'
可能與包限制詞,如果真正的.pm意味着它是一個模塊 – ysth
我的包名,沒有試用過,但我得到無法識別的開關錯誤 – KingsInnerSoul
您使用的是Windows嗎?如果是這樣,那麼你需要雙引號而不是單個引號 – Borodin
可能重複:http://stackoverflow.com/q/23039028 – mob