Este tutorial de 10 minutos no pretende comparar Java con Perl. El propósito es explorar cómo aprender rápidamente Perl como desarrollador de Java. Las siguientes son algunas notas clave desde mi perspectiva.
1. Conceptos básicos para comenzar
A diferencia de Java, no es necesario reclamar un método «principal» como punto de entrada. Para ejecutar un programa Perl simple como el siguiente:
# comment starts with "#" # the name is hello.pl print "Hello Perl!"; |
Solo haz:
2. Tipos de datos
Los tipos de fecha en Perl son muy simples, solo tiene 3 tipos: Scalar, Array y Hash.
Scalar es un valor único, básicamente puede ser cualquier cosa que no sea Array o Hash.
Array es una matriz que puede contener diferentes tipos de elementos, como enteros y cadenas.
Hash es básicamente como HashMap en Java.
El siguiente código combina el uso de todos ellos.
#claim a hash and assign some values my %aHash; $aHash{'a'}=0; $aHash{'b'}=1; $aHash{'c'}=2; $aHash{'d'}=3; $aHash{'e'}=4; #put all keys to an array my @anArray = keys (%aHash); #loop array and output each scalar foreach my $aScalar (@anArray){ print $aScalar."n"; } |
La salida sería:
C
a
B
D
Si desea ordenar la matriz, simplemente puede usar la función de clasificación como la siguiente:
foreach my $aScalar (sort @anArray){ print $aScalar."n"; } |
3. Declaraciones condicionales y de bucle
Perl tiene Si, tiempo, por, para cada palabras clave para condicionales y bucles, que es muy similar con Java excepto cambiar.
El siguiente ejemplo los usa todos.
#if my $condition = 0; if( $condition == 0){ print "=0n"; }elsif($condition == 1){ print "=1n"; }else{ print "othersn"; } #while while($condition < 5){ print $condition; $condition++; } for(my $i=0; $i< 5; $i++){ print $i; } #foreach my @anArray = ("a", 1, 'c'); foreach my $aScalar (sort @anArray){ print $aScalar."n"; } |
4. Lectura / escritura de archivos
El siguiente ejemplo muestra cómo leer y escribir en un archivo. Tenga en cuenta que la diferencia entre «>» y «>>» es que «>>» agrega contenido al archivo mientras que «>» crea uno nuevo.
#read from a file my $file = "input.txt"; open(my $fh, "<", $file) or die "cannot open < $file!"; while ( my $aline = <$fh> ) { #chomp so no new line character chomp($aline); print $aline; } close $fh; # write to a file my $output = "output.txt"; open (my $fhOutput, ">", $output) or die("Error: Cannot open $output file!"); print $fhOutput "something"; close $fhOutput; |
5. Expresión regular
Hay principalmente dos funciones que usa la expresión regular: my s.
El siguiente código hace coincidir la cadena $ str con una expresión regular.
$str =~ m/program(creek|river)/ |
Si $ str es «programcreek», la expresión devuelve verdadero y puede usarse como condición para condicionales y bucles.
6. Analizar por valor / referencia
No es necesario definir métodos / funciones para un programa Perl, pero hacerlo mejoraría enormemente la modularidad y la reutilización del código. Entonces debemos tener cuidado con el paso de parámetros.
Es sencillo pasar un escalar, pero cuando se trata de matriz y hash. Necesita atención adicional.
Formación
my @testArray = (1, 3, 2); #In sub sub processArrayByReference($) { my $arrayref = shift; my @array = @$arrayref; #... } #In sub processarray: sub processArrayByValue($){ my @array = @_; #... } processArrayByValue(@testArray); processArrayByReference( @testArray ); |
Picadillo
sub printHash($) { my %hash = %{ shift() }; for my $key ( sort keys %hash ) { my $value = $hash{$key}; print "$key => $valuen"; } } printHash(%twoLettersCount); |
7. Algunos ejemplos interesantes / complicados
1). Recorre cada carácter de una cadena
my @lineCharArray = split('',$aline); foreach my $character (@lineCharArray){ print $character."n"; } |
2). Crea una matriz con las 26 letras
En lugar de repetir 26 veces, simplemente puede hacer lo siguiente:
my @charArray = ('a'..'z' ); my @twoCharArray = ('aa'..'zz'); |
Esta es la primera edición de los 10 minutos. Actualizaré alguna parte en base a los comentarios.