2010-08-12 11 views
13

Ich habe viel über dieses "Moderne Perl" gehört. Was ist es?Was ist "Modern Perl"?

Eines der Dinge, hörte ich die neue Open-Syntax war:

open my $FH, '<', $filename 

und nicht

open FH, "<$filename"; 

Was ist in der modernen Perl?

+1

[Ihr Beispiel Kopf zu bewältigen auf, argumentiere ich, dass das Verfahren IO ist nicht modern Perl] (http://www.perlmonks.org/?node_id=763565) - so haben uns bereits Sehen Sie einen Unterschied in diesem Begriff, der sehr leicht mit "Web 2.0" verglichen werden kann. –

+2

Moderne Perl == http: //www.ruby-lang.org/de/ – whaley

+1

Ich denke, eine umstrittenere und interessante Frage wäre, * Kann ich moderne OO Perl ohne den Einsatz von 'Moose' schreiben? * –

Antwort

9

Um einige Besonderheiten zu deinst Übersicht hinzufügen, Modern Perl:

  • verwendet Perl 5.10 der new features, wie switch statements (given/when) und say
  • folgen bewährtes Verfahren Perl-Programmierung, wie use strict und use warnings
  • kann das CPAN-Modul Modern::Perl verwenden, um alle diese
  • zu rationalisieren
  • verwendet Moose für High-Level-OO Code schreibt
+5

Außerdem: globale Variablen vermeiden, lexikalisch begrenzte und Accessoren bevorzugen, modularen und wiederverwendbaren Code schreiben, CPAN, Tests, Tests und weitere Tests verwenden ! – szbalint

+2

Der Schalter, mit dem Sie verbunden sind, ist kein Perl 5.10-Feature. Es ist ein inzwischen veraltetes Kernmodul. Vielleicht möchten Sie an ['given' /' when'] denken (http://perldoc.perl.org/perlsyn.html#Switch-statements) –

+0

@ Ven'Tatsu: Fixed. Danke für die Korrektur. –

2

Moderne Perl ist kein Eigenname; Es ist einfach etwas, was Leute sagen könnten, um auf Perl-Code zu verweisen, der Funktionen verwendet, die nur in den letzten X Jahren verfügbar sind, wobei X von Person zu Person variiert.

Informationen zu verschiedenen Änderungen an Perl finden Sie in den perldelta-Dateien, z. B. unter http://perldoc.perl.org/index-history.html.

+1

(Ja, die Buchtitel und Modulname sind richtige Substantive, aber das ist eindeutig nicht das, was in der Frage gemeint war.) – ysth

11

die Programmierung source

Moderne Perl zu zitieren, circa 2010, auf der gesammelten Weisheit des gesamten Perl Ökosystem angewiesen ist. Es ist an der Zeit, einen eleganten, zuverlässigen, wartbaren, gut getesteten und vorhersagbaren Code zu schreiben.

Siehe auch, the book. Und dieses Zitat aus dem Buch

Moderne Perl ist eine lose Beschreibung, wie erfahrene und effektive Perl 5 Programmierer arbeiten. Sie verwenden Sprachidiome. Sie nutzen die CPAN. Sie sind erkennbar Perlish, und sie zeigen guten Geschmack und Handwerkskunst und ein volles Verständnis von Perl.

1

Um auf Ihre Frage spezifisch zu sein in Bezug auf eine Datei-Handelte in modernen Perl öffnen: Sie sollten die drei-Argument Form verwenden, anstatt mit zwei Argumenten!

Verwenden Sie die Drei-Argumente-Form von open, um I/O-Layer (auch "Disziplinen" genannt) anzugeben, die auf das Handle angewendet werden sollen. Es beeinflusst, wie Read-Write verarbeitet wird (siehe http://perldoc.perl.org/functions/open.html für weitere Details). Zum Beispiel:

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