回答
您可以使用eval($str)
來執行您存儲在字符串變量$str
中的Perl代碼。你可以或者存儲您的代碼作爲哈希函數內引用,所以像:
$hash{'random'} = sub { int(rand()) };
通過這種方式,你可以寫$hash{'random'}->()
,每當你想一個隨機值來執行功能。
另請參閱PerlMonks上的Implementing Dispatch Tables。
正如其他人所說,你可以使用eval
執行它們。但是,請注意,通過eval
執行任意可能被污染的字符串是一個主要的安全漏洞,並且如果應用程序的性能很重要,則容易出現緩慢。
可以使用Safe module去除安全漏洞(不知道這是怎麼防彈但比裸eval
更好),但性能問題將永遠存在如Perl將不得不編譯代碼執行它之前在執行主程序。
當你的意思是*任意*時,請不要說*隨機*,尤其是因爲預期的字符串會包含一個對'rand'的調用,所以聽起來好像你說這在某種程度上是相關的,即使它不是。安全漏洞是該字符串可能來自外部來源(如用戶或文本文件)。 – 2009-12-15 14:38:54
好的。編輯。 – DVK 2009-12-15 15:27:08
- 1. 使用分派表中PHP
- 2. 現代Perl:如何在AUTOLOAD()中實現重分派方法?
- 3. 如何在Perl POD派生手冊頁中使用Unicode字符?
- 4. 如何使用派生表
- 5. 如何在perl中使用正則表達式分割
- 6. 如何使用派生表中的Postgres
- 7. 如何用'|'分割在Perl
- 8. 如何在WP7中使用分派器進行異步調用?
- 9. 如何分派Action或ThunkAction(在TypeScript中,使用redux-thunk)?
- 10. =〜如何在Perl中表現?
- 11. 如何在Perl中引用拆分表達式?
- 12. 創建使用Perl帕派克
- 13. Perl 6的多派遣如何決定使用哪個例程?
- 14. 如何使用Perl提取部分行?
- 15. 如何使的代碼部分在Perl
- 16. 如何在sql查詢中使用派生表列?
- 17. 如何在Perl中使用其他分隔符?
- 18. 如何在Perl中使用空格填充部分字符串?
- 19. 如何在Perl POD中使用Pod :: Weaver添加HTML部分
- 20. 如何在Perl中使用Getopt時對參數進行分組?
- 21. 如何在Perl中使用正則表達式分析多行HTML
- 22. 我如何使用`在Perl
- 23. 如何在Perl中區分嵌套列表運算符中的$ _?
- 24. 如何使用中繼分派一個即席查詢?
- 25. 如何在perl中分隔數組?
- 26. 如何在Perl中選擇部分行?
- 27. 如何在Perl程序中使用sed?
- 28. 如何使用\ d在perl中匹配?
- 29. 如何在perl中使用POST方法?
- 30. 如何在perl中使用O_ASYNC和fcntl?
Duplicate:「我如何在Perl中實現調度表?」 http://stackoverflow.com/questions/1281456/how-do-i-implement-dispatch-tables-in-perl – 2009-12-15 14:01:20
哈希值擁有標量值。如果您在代碼中描述瞭如何在散列中存儲「命令」,那麼在回答中提供相關示例可能會有所幫助。 Perl代碼中的字符串?子程序參考?還有別的嗎? – 2009-12-15 14:43:09