Categorías
Perl Versus

Tutorial de Perl de 10 minutos para desarrolladores de Java

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:

perl hello.pl

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:

mi
C
a
B
D

Si desea ordenar la matriz, simplemente puede usar la función de clasificación como la siguiente:

  Herencia frente a composición en Java
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;
  ArrayList frente a LinkedList frente a vector

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

  Java vs.Python (2): tipos de datos

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.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *