2010-08-12 56 views
13

我一直聽到很多關於這個「現代Perl」的消息。它是什麼?什麼是「Modern Perl」?

一個我聽到的是新開的語法的事情:

open my $FH, '<', $filename 

,而不是

open FH, "<$filename"; 

還有什麼是現代的Perl?

+1

[要在解決你的榜樣的頭,我認爲,程序IO不是現代的Perl(http://www.perlmonks.org/?node_id=763565) - 所以我們已經看到這個術語中的差異很容易被比喻爲「Web 2.0」。 – 2010-08-12 16:13:40

+2

現代Perl == http://www.ruby-lang。org/en/ – whaley 2010-08-12 16:16:31

+1

我認爲一個更有爭議和有趣的問題是,*我可以在不使用'Moose'的情況下編寫現代OO perl嗎?* – 2010-08-12 16:18:17

回答

9

對一些細節添加到deinst的概述,現代的Perl:

  • 使用Perl 5.10的new features,像switch statementsgiven/when)和say
  • 遵循良好的Perl編程習慣,像use strictuse warnings
  • 可能會使用Modern::Perl CPAN模塊來簡化所有這些
  • 使用Moose編寫高水平的面向對象的代碼
+5

另外:避免使用全局變量,更喜歡使用詞法作用域和訪問器,使用CPAN編寫模塊化和可重用的代碼,使用CPAN,測試,測試和更多的測試! – szbalint 2010-08-12 16:24:49

+2

您鏈接的'switch'不是Perl 5.10功能。這是一個已被棄用的核心模塊。你可能想考慮[''given' /'when'](http://perldoc.perl.org/perlsyn.html#Switch-statements) – 2010-08-12 17:46:36

+0

@ Ven'Tatsu:修正。感謝您的更正。 – 2010-08-12 17:55:57

2

現代Perl不是專有名詞;這只是人們可能會說的引用Perl代碼的一些東西,這些代碼只使用了過去X年中可用的功能,其中X因人而異。

有關Perl各種更改的信息,請參閱perldelta文件,例如http://perldoc.perl.org/index-history.html

+1

(是的, – ysth 2010-08-12 17:07:11

11

引述source

現代Perl編程,大約在2010年,依賴於整個Perl的 生態系統所收集的智慧。現在是編寫優雅,可靠,可維護,經過充分測試和可預測的代碼的時候了。

另請參閱,the book。而這本書的引用

現代的Perl是一個鬆散的描述如何有經驗和有效的Perl 5程序員工作。他們使用語言習語。他們利用CPAN。它們是Perlish的可識別的,它們表現出良好的品味和工藝以及對Perl的全面理解。

1

爲了具體到你的問題涉及到開放現代的Perl文件句柄:你應該使用三個參數的形式,而不是兩個參數的形式!

使用open的三參數形式來指定應用於句柄的I/O層(也稱爲「學科」)。它會影響讀寫的處理方式(有關更多詳細信息,請參閱http://perldoc.perl.org/functions/open.html)。例如:

open(my $fh, "<:encoding(UTF-8)", "filename") 
|| die "can't open UTF-8 encoded filename: $!";