2010-08-12 23 views
13

He estado escuchando mucho sobre este "Perl moderno". ¿Qué es?¿Qué es "Perl moderno"?

Una de las cosas que oí fue la nueva sintaxis abierta:

open my $FH, '<', $filename 

y no

open FH, "<$filename"; 

¿Qué otra cosa es en Modern Perl?

+1

[Para hacer frente a la cabeza de ejemplo, se argumenta que la IO procesal no es moderno Perl] (http://www.perlmonks.org/?node_id=763565) - por lo que ya hemos ver una diferencia en este término que se puede comparar fácilmente a "Web 2.0". –

+2

Perl moderno == http: //www.ruby-lang.org/en/ – whaley

+1

Creo que una pregunta más controvertida e interesante sería: * ¿Puedo escribir OO perl moderno sin el uso de 'Moose'? * –

Respuesta

9

Para añadir algunos detalles a la vista de deinst, Modern Perl:

  • utiliza Perl 5.10 de new features, como switch statements (given/when) y say
  • con las buenas prácticas de programación Perl, como use strict y use warnings
  • pueden usar el módulo CPAN Modern::Perl para agilizar todo esto
  • utiliza Moose para escribir código orientado a objetos de alto nivel
+5

También: evitando variables globales, prefiriendo los de ámbito léxico y los usuarios, escribiendo código modular y reutilizable, usando CPAN, pruebas, pruebas y más pruebas ! – szbalint

+2

El 'interruptor 'al que se ha vinculado no es una función de Perl 5.10. Es un módulo básico ahora obsoleto. Es posible que desee pensar en ['given' /' when'] (http://perldoc.perl.org/perlsyn.html#Switch-statements) –

+0

@ Ven'Tatsu: corregido. Gracias por la corrección. –

2

Modern Perl no es un nombre propio; es simplemente algo que las personas podrían decir para referirse al código Perl que usa características que solo están disponibles en los últimos X años, donde X variará de persona a persona.

Para obtener información sobre varios cambios en Perl, consulte los archivos perldelta, por ejemplo, en http://perldoc.perl.org/index-history.html.

+1

(Sí, el el título del libro y el nombre del módulo son nombres propios, pero eso claramente no es lo que se quería decir en la pregunta.) – ysth

11

Para citar la programación Perl Moderno source

, alrededor del año 2010, se basa en la sabiduría colectiva de todo el ecosistema Perl . Es hora de escribir el código elegante, confiable, mantenible, bien probado y predecible.

Véase también, the book. Y esta cita del libro

Modern Perl es una descripción suelta de cómo funcionan los programadores Perl 5 experimentados y efectivos. Usan lenguaje idiomático. Aprovechan el CPAN. Son reconociblemente Perlish, y muestran buen gusto y artesanía y una comprensión completa de Perl.

1

Para ser específicos a su pregunta relacionada con la apertura de un identificador de archivo en Perl moderna: Se debe utilizar la forma de tres argumentos, en lugar formato de dos argumentos!

Utilice la forma de tres argumentos de open para especificar las capas de E/S (también denominadas "disciplinas") para aplicarlas al identificador. Afecta cómo se procesa la lectura-escritura (ver http://perldoc.perl.org/functions/open.html para más detalles). Por ejemplo:

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