我不明白在Perl文檔中針對3種不同字符串eval類型的解釋。它不利於文檔亂碼,文本缺失,從而使句子的開頭與其結尾不符。在Perl中解釋3種不同風格的字符串eval
的三種風味是
- 需要
use feature qw(eval_bytes);
才能使用,或者CORE::evalbytes
。
我不明白在Perl文檔中針對3種不同字符串eval類型的解釋。它不利於文檔亂碼,文本缺失,從而使句子的開頭與其結尾不符。在Perl中解釋3種不同風格的字符串eval
的三種風味是
use feature qw(eval_bytes);
才能使用,或者CORE::evalbytes
。use feature qw(unicode_eval)
是否有解決令人困惑的怪癖與香草eval
不能修復,而不破壞向後兼容性。
根據字符串的內部編碼,eval的行爲有所不同,有時將其參數視爲字符串的字符串,有時視爲字符串。內的eval激活
源過濾器泄漏到取其文件範圍當前正在編譯。
與use feature qw(unicode_eval)
這個變化。現在eval
將始終將其代碼視爲字符(即UTF-8)並且不會泄漏。這很可能是你想要的行爲。
對於那些真的,真的想要解釋爲字節(即ASCII)的代碼有evalbytes
,但你可能不需要。
TL;博士:如果您使用5.16或更新,你使用eval
(你可能不應該),use feature qw(unicode_eval)
和eval
。它支持UTF-8,它修復了eval
怪癖。
或者只是use utf8::all
忘掉它。
我最終做了一堆實驗來得到這個問題的答案。在我發佈這個問題之前,我已經排除了Schwern的回答。有些亂碼的文檔在perlfunc中。 (這和feature.pm中的文檔大量重疊。)結果是我改變了文檔以反映我發現的內容。現在在perl 5.25.10,應該在5.26。我將feature.pm文檔更改爲一個簡短的摘要,沒有詳細信息,鏈接到perlfunc以瞭解行爲。這是一個鏈接到改變這個提交的差異列表。我相信它充分描述了事情的實際工作方式。但補丁是受歡迎的。
的文字是對存在添加的功能之前的缺陷弱。我查看了perl5-porters電子郵件列表中關於此主題的所有電子郵件,但沒有發現任何超出我在補丁中編寫的內容
我相信OP指的是[本文檔](https:// metacpan.org/pod/feature#The-unicode_eval-and-evalbytes-features)。 – mob
如果你自己表現出更多的努力,即告訴我們你特別不明白的東西,你可能會得到更好/更多的答案和更少的積分。 – Robert
這實際上很簡單的問題。 「他們之間只有很小的差別,它是什麼?」 – ikegami