2014-05-05 69 views
1

我有一個perl(.pm)文件與多個子例程。我想要執行一個將一個參數作爲參數的子程序。我試過通過命令提示符執行Perl子例程?

perl /full_file_path/file_name.pm mySubRoutine myArgument 

但是什麼都沒有返回。什麼是正確的格式?

+0

可能重複:http://stackoverflow.com/q/23039028 – mob

回答

1

如果你的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)' 
+1

可能與包限制詞,如果真正的.pm意味着它是一個模塊 – ysth

+1

我的包名,沒有試用過,但我得到無法識別的開關錯誤 – KingsInnerSoul

+1

您使用的是Windows嗎?如果是這樣,那麼你需要雙引號而不是單個引號 – Borodin

相關問題