Categorías
Perl

Tutoriales de Perl para un desarrollador de nivel avanzado

Perl es un buen lenguaje de escritura que es fácil de usar. Se origina como un lenguaje de scripting de Unix y se ha mejorado con muchas características nuevas de scripting de shell, C, etc. Perl es muy poderoso para el procesamiento de texto.

Para un desarrollador experimentado, el útil tutorial sería una rápida introducción al lenguaje, pero no con gran detalle. Un nuevo lenguaje de programación no es más que sus tipos de datos, condicionales, bucles, E / S de archivos, algunas funciones y algunos casos de uso complicados.

Aquí hay un buen tutorial de introducción que es útil para mí y, con suerte, útil para usted.

http://perldoc.perl.org/perlintro.html

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:

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.

Categorías
Perl

Ejemplo de código Perl: proceso de argumento de línea de comando con opciones

Aquí hay un hermoso ejemplo de código Perl que procesa argumentos de línea de comando con opciones específicas. Con este fragmento de código, puede definir cualquier número de opciones como un desarrollador profesional de Perl de una manera profesional. Es bonito porque es la forma más precisa de especificar opciones para argumentos de línea de comando que he visto.

Nos permite utilizar el siguiente formato de uso:

perl process.pl -l java -t testset1

Todos los argumentos de la línea de comandos se leen en la matriz @ARGV, y ese es el comienzo de este ejemplo de procesamiento de argumentos de la línea de comandos.

# file name: process.pl
while (scalar @ARGV > 0){
	$Temp = shift @ARGV;
	if ($Temp eq '-l'){
		$NextParam = 'language';
	}
	elsif ($Temp eq '-t'){
		$NextParam = 'test';
	}
	elsif (defined $NextParam){
		if ($NextParam eq 'language'){
			$Lang = $Temp;
		}
		elsif ($NextParam eq 'test'){
			$Test = $Temp;
		}
 
		undef $NextParam;
	}
}

Este enfoque se puede aplicar al procesamiento de argumentos de la línea de comandos de Java aunque no usamos la línea de comandos con frecuencia en Java.

Nota: Desde $ ARGV[0] es el primer argumento, $ # ARGV es el número de argumentos menos uno.