官宣已兩年,Perl 7咋樣了?
不點(diǎn)藍(lán)字關(guān)注,我們哪來(lái)故事?
誰(shuí)在決定 Perl 的方向??
Perl 當(dāng)前發(fā)展戰(zhàn)略
現(xiàn)有的合理編寫(xiě)的 Perl 5 代碼應(yīng)該能在未來(lái)的 Perl 版本下繼續(xù)運(yùn)行(繼續(xù)保持向后兼容性)。但有時(shí)這是不可能的,比如某些安全漏洞可能需要破壞向后兼容性的更改才能修復(fù)。 推動(dòng)語(yǔ)言向前發(fā)展,提高引入新功能的速度。所以引入了 RFC 流程,任何人都可以使用該流程來(lái)對(duì) Perl 語(yǔ)言提出修改。 讓人們更容易使用這些新功能。
特性保護(hù)
say?關(guān)鍵字。但默認(rèn)情況下無(wú)法啟用它,因?yàn)橛腥丝赡茉诖a中有一個(gè) say 函數(shù),那么新的關(guān)鍵字就會(huì)與之沖突。因此需要用到 feature pragma (編譯指示功能): use feature 'say';
say "hello, world";但并不是所有的新語(yǔ)言特性都有保護(hù)。如果新的語(yǔ)法,在所有舊版本的 Perl 中都會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤,那么就不需要保護(hù)了。例如,Perl 5.36.0 引入了新的語(yǔ)法,允許一次從一個(gè)列表中處理 N 項(xiàng):
foreach my ($key, $value) (%hash) {
…
}use v5.36?之前)。版本包捆綁
use v5.36; require v5.36;
use strict;
use warnings;
use feature 'say';
use feature 'state';
use feature 'current_sub';
use feature 'fc';
use feature 'lexical_subs';
use feature 'signatures';
use feature 'isa';
use feature 'bareword_filehandles';
use feature 'bitwise';
use feature 'evalbytes';
use feature 'postderef_qq';
use feature 'unicode_eval';
use feature 'unicode_strings';
no feature 'indirect';
no feature 'multidimensional';告訴 perl 解釋器和人類讀者,當(dāng)前代碼需要 perl 5.36.0 或更高版本才能運(yùn)行; 支持當(dāng)前版本 Perl 提供的所有非實(shí)驗(yàn)性功能; 使用了許多已被廣泛實(shí)踐過(guò)的附加編譯指示。
Perl 7 咋樣了?
我們有很多好的想法在工作中,如果我們能夠保持去年的勢(shì)頭,那么事情看起來(lái)很有希望。與此同時(shí),我們將繼續(xù)發(fā)布 5.XX 版本。(畫(huà)餅大師?)
END
若覺(jué)得文章對(duì)你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
長(zhǎng)按二維碼,掃掃關(guān)注哦
?「C語(yǔ)言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程??
評(píng)論
圖片
表情
