experimental - 讓實驗性功能變得容易
版本 0.031
use experimental 'lexical_subs', 'signatures';
my sub plus_one($value) { $value + 1 }
這個實用程式提供一種簡單又方便的方式來啟用或停用實驗性功能。
每個版本的 perl 都有一些功能存在,但被認為是「實驗性的」。在 Perl 5 的大部分生命週期中,這只是一個在文件中找到的標示。從 Perl v5.10.0 開始,並在 v5.18.0 中更積極地將實驗性功能放在實用程式後面,用於啟用功能並停用相關警告。
experimental
實用程式存在於將所需的咒語組合成一個介面中,在 perl 的版本中保持穩定。對於每個實驗性功能,這應該會啟用該功能並讓封閉的詞法範圍的警告保持靜默
use experimental 'feature-name';
若要停用該功能,並在適用的情況下重新啟用任何警告,請使用
no experimental 'feature-name';
支援的功能,在下面有進一步的說明,是
args_array_with_signatures
- 允許在有簽名的子程式中使用 @_
。
這在 perl 5.20.0 及以上版本中受到支援,但很可能會在未來被移除。
array_base
- 允許使用 $[
來變更 @array
的起始索引。
此功能已於 perl 5.30.0 中移除。
autoderef
- 允許在參照上使用 push、each、keys 和其他內建函數。
此功能已於 perl 5.14.0 中新增,並於 perl 5.24.0 中移除。
bitwise
- 允許使用新的字串位元運算子
此功能已於 perl 5.22.0 中新增。
builtin
- 允許使用 builtin:: 名稱空間中的函數
此功能已於 perl 5.36.0 中新增
const_attr
- 允許在子常式上使用 :const 屬性
此功能已於 perl 5.22.0 中新增。
declared_refs
- 啟用透過指派至參照來進行別名設定
此功能已於 perl 5.26.0 中新增。
defer
- 啟用使用 defer 區塊
此功能已於 perl 5.36.0 中新增
extra_paired_delimiters
- 啟用使用比傳統四種更多的成對字串分隔符號,< >
、( )
、{ }
和 [ ]
。
此功能已於 perl 5.36 中新增。
for_list
- 允許使用 for
一次迭代多個值
此功能已於 perl 5.36.0 中新增
isa
- 允許使用 isa
中綴運算子
此功能已於 perl 5.32.0 中新增。
lexical_topic
- 允許透過 my $_
使用詞法 $_
。
此功能已於 perl 5.10.0 中新增,並於 perl 5.24.0 中移除。
lexical_subs
- 允許使用詞法子常式。
此功能已於 5.18.0 中新增,並於 5.26.0 中成為非實驗性質(且始終啟用)。
postderef
- 允許使用後綴解除參照表達式
此功能已於 perl 5.20.0 中新增,並於 5.24.0 中成為非實驗性質(且始終啟用)。
postderef_qq
- 允許在內插字串中使用後綴解除參照表達式
此功能已於 perl 5.20.0 中新增,並於 5.24.0 中成為非實驗性質(且始終啟用)。
re_strict
- 在正規表示式中啟用嚴格模式
此功能已於 perl 5.22.0 中新增。
refaliasing
- 允許透過 \$x = \$y
進行別名設定
此功能已於 perl 5.22.0 中新增。
regex_sets
- 允許在正規表示式中使用延伸的方括號字元類別
此功能已於 perl 5.18.0 中新增。
signatures
- 允許子常式簽章(用於命名參數)
這是在 perl 5.20.0 中新增的。
smartmatch
- 允許使用 ~~
這是在 perl 5.10.0 中新增的,但請注意 5.10.0 和 5.10.1 之間有顯著的不相容性。
此功能將在 perl 5.38.0 中被棄用,並在 5.42.0 中移除。
switch
- 允許使用 ~~
、given 和 when
這是在 perl 5.10.0 中新增的。
此功能將在 perl 5.38.0 中被棄用,並在 5.42.0 中移除。
try
- 允許使用 try
和 catch
這是在 perl 5.34.0 中新增的。
win32_perlio
- 允許使用 :win32 IO 層。
這是在 perl 5.22.0 中新增的。
使用此 pragma 來「啟用實驗性功能」是另一種說法,表示此 pragma 將停用使用該功能所產生的警告。因此,套用 pragma 的順序很重要。特別是,您可能希望在啟用警告之後啟用實驗性功能
use warnings;
use experimental 'smartmatch';
您還需要小心啟用警告的模組。一個常見的範例是 Moose。在此範例中,warnings pragma 首先開啟「smartmatch」功能的警告,experimental pragma 將其關閉,而 Moose 模組又將其開啟(修正方法是交換最後兩行)
use warnings;
use experimental 'smartmatch';
use Moose;
由於啟用功能的性質,無法以任何方式保證向前相容性。
perlexperiment 包含有關實驗性功能的更多資訊。
Leon Timmermans <leont@cpan.org>
此軟體的版權為 (c) 2013 Leon Timmermans 所有。
這是自由軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。