如果您忘記包裝末尾的1,Perl會告訴您「包裝沒有返回真實值」。那麼,如果它知道你忘了它,爲什麼不把它放在那裏呢?爲什麼1在每個perl包的末尾?
回答
因爲如果require
指令必須成功(返回true值)或失敗(返回false值;如果模塊由於某種原因未能初始化),則需要Perl模塊返回值以發出信號。
如果您不返回任何內容,解釋器無法知道require
必須成功還是失敗;同時,由於很容易忘記將真正的價值放在包裝的末尾,它暗示了這種錯誤的「常見問題」:添加一個真正的價值作爲回報。
對於其他有關模塊返回值的其他信息/民間傳說看看this question。
如果你忘了放在那裏,那是不是意味着你可能不需要發出任何失敗的初始化信號?既然它看起來會是一個非常專業化的案例,我們不能否認它會成功,除非我們告訴它它有可能不會成功? –
@Chris:我們可以爭論什麼會更好或更合乎邏輯,但語言是以這種方式設計的,談論它並不會改變這種行爲。 ':)'(個人來說,我認爲它現在更好一些:如果要求返回值,那麼你*有*來指定它) –
@Matteo - 由於Perl 6仍然處於「無限期未來」階段我認爲談論語言_can_(幾乎肯定會)會改變它的行爲。 –
如果程序包無法初始化,例如無法找到所需的數據文件或外部程序庫,則該程序包可能會返回錯誤的值。這種方式在加載時會乾淨地失敗(甚至可以測試此失敗),而不是在以後不可預知的情況下。
如果程序包未能初始化,它可能會返回一個錯誤的值,但它不應該。用有用的信息來消磨會更好。 – ikegami
1;
When a module is loaded (via use) the compiler will complain unless the last statement executed when it is loaded is true. This line ensures that this is the case (as long as you don't place any code after this line). It's Perl's way of making sure that it successfully parsed all the way to the end of the file.
見http://mathforum.org/~ken/perl_modules.html
您可以使用評估爲真任何聲明。 1恰好成了一個perl習語。
A Perl module must end with a true value or else it is considered not to
have loaded. By convention this value is usually 1 though it can be
any true value. A module can end with false to indicate failure but
this is rarely used and it would instead die() (exit with an error).
- 1. 爲什麼我的印刷陣列末尾有1個?
- 2. 爲什麼PHP_EOL在每行的末尾寫入\ r \ n
- 3. ¬在vim每行的末尾
- 4. 爲什麼gradle build會在我的bundle id的末尾添加「-1」?
- 5. 爲什麼你需要一個URL末尾的斜線?
- 6. 爲什麼Perl認爲-1是真的?
- 7. 在JOptionOutput的末尾獲取「1」
- 8. 如何在每行的末尾在vim
- 9. 爲什麼Drupal 8在每個css文件的末尾添加一個GET變量,並顯示爲404?
- 10. 字典末尾的()是什麼?
- 11. 如何在R中的每個變量名的末尾添加「1」?
- 12. 爲什麼分區方法在數組的末尾添加nil?
- 13. 爲什麼顯示UIAlertView必須在線程的末尾
- 14. 爲什麼我們應該在button_press_event.handler的末尾返回True?
- 15. 在numpy中,爲什麼flatiter訪問過ndarray的末尾?
- 16. 爲什麼在此函數定義的末尾添加了const?
- 17. 爲什麼在c中定義常量的末尾使用'e0'?
- 18. 爲什麼我在變量的末尾有隨機字符串?
- 19. 爲什麼在ListView的末尾添加元素?
- 20. 爲什麼有些人在變量的末尾附加f?
- 21. 爲什麼XML元素沒有附加在文件的末尾
- 22. 爲什麼我必須在git日誌的末尾打到q
- 23. 爲什麼在0末尾附加了從cics中取的值
- 24. 語句末尾的Perl分號
- 25. 爲什麼在這個HtmlNodeCollection的末尾總會有一個空字符串?
- 26. 爲什麼在這個函數的末尾沒有這個數組?
- 27. 每個堆棧跟蹤行末尾的數字是什麼意思?
- 28. 如何測試列表中每個元素的末尾是什麼python
- 29. XMLStreamReader - 文件末尾會發生什麼?
- 30. 爲什麼在浮點號末尾使用字母f?
你想[真](http://p3rl.org/true)。 – daxim