Tutorial de Perl: variable, matriz, hashes con ejemplo de programación

¿Qué es Perl?

Perl es un lenguaje de programación dinámico, interpretado, de alto nivel y de propósito general. Perl es un término que significa "Lenguaje práctico de extracción e informes", aunque no existe un acrónimo para Perl. Fue introducido por Larry Wall en 1987. El lenguaje Perl fue diseñado especialmente para la edición de texto. Pero ahora se usa ampliamente para una variedad de propósitos que incluyen administración de sistemas Linux, programación de redes, desarrollo web, etc.

Descripción general de los lenguajes de programación

Digámoslo de una manera sencilla. Si bien las computadoras solo entienden 0 y 1 (lenguaje binario/lenguaje de máquina/[lenguaje de bajo nivel]), es muy difícil para nosotros, los humanos, programar en un lenguaje binario. Perl es un lenguaje de programación que utiliza elementos del lenguaje natural, palabras que se usan en el idioma inglés común y, por lo tanto, es más fácil de entender para los humanos.lenguaje de alto nivel]. Ahora hay un problema; Las computadoras no pueden entender lenguajes de alto nivel, que los humanos podemos entender fácilmente. Para eso, necesitamos algo que pueda traducir el lenguaje de alto nivel al lenguaje de bajo nivel. Aquí el intérprete viene en nuestra ayuda. El intérprete es una pieza de software que convierte el programa escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel para que la computadora comprenda y ejecute las instrucciones escritas en el programa. Por tanto, Perl es un lenguaje de programación interpretado.

¿Dónde se utiliza Perl?

El poder del lenguaje de programación Perl se puede implementar en muchos campos. El uso más popular de Perl es en el desarrollo web. Perl también se utiliza para automatizar muchas tareas en los servidores web y otros trabajos administrativos, puede generar correos electrónicos automáticamente y limpiar sistemas. Perl todavía se utiliza para su propósito original, es decir, extraer datos y generar informes. Puede producir informes sobre el uso de recursos y verificar problemas de seguridad en una red. Debido a esta razón, Perl se ha convertido en un lenguaje popular utilizado también en el desarrollo web, redes y bioinformática. Aparte de todo esto, Perl también se puede utilizar para la programación CGI.

Perl también se puede utilizar para la creación y manipulación de imágenes. Además de eso, la creación de redes a través de Telnet, FTP, etc., la creación de interfaces gráficas de usuario, la electrónica VLSI y la creación de filtros de correo para reducir las prácticas de correo basura son algunos de los casos de uso de Perl.

Perl también es conocido por la implementación de prácticas de programación orientada a objetos (OOP) y admite todas las formas de herencia (simple, múltiple y de diamante), polimorfismo y encapsulación. Perl es lo suficientemente flexible como para admitir prácticas de programación orientada a objetos y procedimentales simultáneamente. Perl también tiene módulos adicionales que le permiten escribir o usar/reutilizar código escrito en Python, PHP, PDL, TCL, Octava, Java, C C++, Basic, Ruby y Lua en tu script Perl. Esto significa que puedes combinar Perl con estos extra lenguajes de programación en lugar de reescribir el código existente.

Aplicaciones del lenguaje de programación Perl

Aplicaciones del lenguaje de programación Perl

¿Por qué utilizar Perl?

Es cierto que existen otros lenguajes de programación que se pueden usar para hacer todo lo mencionado anteriormente, entonces ¿por qué deberías usar Perl específicamente? Perl es muy fácil de aprender., especialmente si tienes experiencia en programación de computadoras. Perl fue diseñado para que los humanos pudieran escribirlo y comprenderlo fácilmente, en lugar de facilitar su procesamiento por parte de las computadoras. Utiliza expresiones regulares. Su estilo natural de lenguaje es diferente de otros lenguajes de programación que usan gramática y sintaxis específicas; por lo tanto, Perl es muy flexible y no impone ninguna forma particular de pensar en una solución o un problema. Perl es extremadamente portátil. Puede ejecutarse en cualquier sistema operativo que tenga instalado el intérprete de Perl, por lo que es independiente de la plataforma. Todo Linux OperaLos sistemas operativos vienen con Perl instalado, por lo que puede comenzar a codificar en Perl en Linux desde el primer momento. Esto es diferente a los scripts de Shell, donde el código cambia según la distribución de Linux que se utilice, lo que lo hace cada vez menos portátil. Pequeñas tareas específicas en Perl se vuelven muy fáciles y rápidas. A lo largo de este tutorial de Perl para principiantes, aprenderá cómo codificar programas pequeños y rápidos para tareas específicas. Tomemos un ejemplo simple del clásico programa Hello World que se utiliza para comenzar a aprender cualquier lenguaje de programación que tenga UNIX como raíz:

Ejemplo: Perl hola mundo

Ejemplo sencillo de Perl

#!/usr/bin/perl
print "Hello, world!";

Salida:

Hola mundo

Las dos líneas de código anteriores imprimirán ¡Hola mundo! ¿No fue demasiado simple y rápido? Estudiantes con conocimientos de C, C++ sabrá que se requieren muchas más líneas de código para obtener el mismo resultado en esos idiomas.

Puede que te preguntes por qué Perl es tan famoso en la Web. Es simple ya que la mayoría de las cosas que suceden en la web son de TEXTO y Perl es muy bueno en el procesamiento de texto. Si comparamos Perl con cualquiera de los lenguajes, entonces Perl será el mejor lenguaje que sea bueno en el manejo de archivos, procesamiento de textos y generación de informes.

Una de las mejores ventajas de Perl es que es de uso gratuito.

La comunidad Perl cree firmemente que el software debe estar disponible, modificarse y distribuirse libremente. Varios voluntarios de la comunidad Perl se esfuerzan por hacer que el lenguaje de programación sea lo mejor posible.

Ventajas y desventajas de Perl

Pros: Contras:

Ventajas de Perl

Desventajas de Perl

  • En comparación con otros lenguajes de programación, Perl es más potente para el manejo y análisis de texto.
  • Este es un lenguaje interpretado con un tiempo de ejecución rápido ya que no es necesario compilar un script Perl.
  • Sencillo y fácil de programar y entender.
  • Está orientado a objetos.
  • La biblioteca CPAN facilita el desarrollo de Perl (aprenderemos más sobre esto más adelante en el tema).
  • Se utiliza en el desarrollo web principalmente para pasarelas de pago.
  • Se utiliza en automatización y para probar la mayoría de las cosas relacionadas con la red y el almacenamiento.
  • Hay una compatibilidad mínima con GUI en comparación con otros lenguajes de programación.
  • Debes consultar módulos de biblioteca complejos que no son tan fáciles de entender (no tengas miedo, una vez que sepas cómo hacer las cosas, todo será fácil).
  • Comprender patrones complejos requiere experiencia.

Empecemos

Con suficiente conocimiento sobre la historia de Perl y los conceptos básicos de programación informática necesarios para codificar en Perl, es hora de sumergirnos y comenzar a trabajar con Perl. El próximo capítulo le enseñará cómo configurar Perl en su sistema y prepararse para el viaje de codificación en Perl. Este tutorial de programación en Perl utilizará Linux como sistema operativo que los estudiantes utilizarán para codificar en Perl.

Descargar e instalar Perl – Windows, Mac y Linux

¿Cómo conseguir Perl?

Buenas noticias probablemente lo tengas!

Pero si aún no puede encontrarlo en su sistema, aún puede obtenerlo gratis.

Para saber si ya tiene Perl instalado, vaya a la línea de comando y escriba: perl -v

Cómo descargar Perl

El comando mostrará la versión de Perl si está instalada. En este caso la versión es la v5.14.2. Pero si no… que no cunda el pánico…

UnixTutorial PERL para principiantes - Guía completa Ya está instalado Viene con Perl preinstalado, aunque es posible que deba actualizarlo a la última versión.
Mac OS Tutorial PERL para principiantes - Guía completa Ya está instalado OSX viene con Perl preinstalado, aunque es posible que tengas que actualizarlo a la última versión
WindowsTutorial PERL para principiantes - Guía completa Necesidad de instalar Hay dos opciones disponibles

  1. Strawberry Perl es una distribución binaria de código abierto de Perl para Windows SO. Incluye un compilador y módulos preinstalados que ofrecen la posibilidad de instalar módulos XS CPAN directamente desde CPAN.
  2. ActiveState Perl proporciona una distribución binaria de Perl (para muchas plataformas), así como su propio administrador de paquetes Perl (PPM).

Actualización de Perl en Linux:

Si necesita actualizar la versión de Perl, simplemente ingrese una sola línea de comando

sudo apt-get instalar perl

y relájate. Del resto ya nos encargaremos. Solo asegúrese de tener una conexión a Internet activa.

Actualizar PERL en Linux

Actualizar PERL en Linux

instalar perl para Windows:

Primero, descargue Active Perl desde este enlace. Siga estos pasos para instalar ActivePerl en Windows sistema. Vea las capturas de pantalla a continuación para ver lo mismo.

Paso 1: Una vez que descargue el instalador e inicie la instalación, verá la siguiente ventana, haga clic en Siguiente para continuar.

Cómo instalar Perl en Windows

Paso 2: Acepte el acuerdo de licencia para continuar con la instalación.

Cómo instalar Perl en Windows

Paso 3: A continuación se muestran los diferentes paquetes que se instalarán. De forma predeterminada, se seleccionarán todos. La única diferencia es PPM (Perl Package Manager). Esta es la utilidad proporcionada por Active Perl para instalar módulos o bibliotecas Perl externos en su sistema. Haga clic en Siguiente para continuar.

Instalando Perl en Windows

Paso 4: Estos son diferentes tipos de extensiones de Perl que se pueden usar para Perl. Principalmente usaremos .Pl, .Plx y .Pm para Perl. Los módulos de Perl básicamente usan .Pm como extensión de archivo para referirse a un archivo de biblioteca. Seleccione todas las opciones y haga clic en el botón Siguiente.

Instalando Perl en Windows

Paso 5: Haga clic en el botón Instalar para continuar con la instalación.

Instalando Perl en Windows

Paso 6: Una vez instalado, ejecute el comando 'Perl –v' para verificar si Perl se instaló correctamente en su sistema.

instalación PERL en Windows

Hay muchas cosas que deben discutirse para configurar el entorno Perl tanto en Linux como en Linux. Windows, ya que no se incluirán muchos archivos de biblioteca en esta instalación. Debes instalarlos manualmente. Puede instalarlos manualmente usando CPAN (Comprehensive Perl Archive Network) o PPM, que funciona solo para Perl en Windows. Pero estos archivos no son obligatorios para comenzar a codificar en Perl.

Aparte de esta configuración de Windows, puedes usar Windows Nuevas características del subsistema Linux de 10 en comparación con Windows y su uso para ejecutar código Perl

Primer programa Perl

Hello world!

Ejemplo de Perl: Hola mundo

#!/usr/bin/perl -w
#this is just a comment…
print "Hello World";

No te preocupes si no entiendes este texto. Todo quedará claro pronto. Ven y échale un vistazo por línea:

#!/usr/bin/perl		

Esto le dice al Operating System para ejecutar este archivo con el programa ubicado en /usr/bin/perl Algunos IDE no necesitan esta línea. Si es imprescindible, debes escribir aquí una ruta a tu intérprete. ¡Recordar! Esta línea especial debe estar al principio de su programa y debe comenzar desde #! utilizar advertencias; Este es otro comando especial que le dice al intérprete que muestre cualquier advertencia, es decir, -w que activa las advertencias globalmente.

print "Hello World";		

La instrucción de impresión escribe texto en la pantalla. El punto y coma al final de la línea le indica al intérprete de Perl que la instrucción ha finalizado. Debes poner un punto y coma al final de cada instrucción en código Perl. Tenga en cuenta las comillas ("). Es necesario para las instrucciones de impresión. Guarde el script anterior como firstprog.pl

On Windows

Si tiene instalado Strawberry, simplemente haga clic en Ejecutar. También puedes ejecutar la interfaz de línea de comandos y escribir en la consola:

C:\> perl path\firstprog.pl		

o, si perl.exe no está en su ruta:

C:\> c:\perl\bin\perl.exe firstprog.pl		

En Linux / Unix

Sólo tienes que abrir la Terminal y escribir:

perl firstprog.pl		

Si no puede ejecutar el programa, asegúrese de tener los requisitos para ejecutarlo. Escriba en la Terminal:

chmod +x firstprog.pl		

Su programa ahora es ejecutable y está listo para ejecutarse. Para ejecutar, escriba:

./firstprog		

Instalar módulos cpan menos

Los módulos son conjuntos de códigos que se utilizan para realizar tareas que realizan operaciones comunes en varios programas. Si utiliza módulos de Perl, no tendrá que reescribir los códigos para realizar la misma operación. Perl puede hacer uso de dichas bibliotecas externas de códigos. Una de las mejores bibliotecas es CPAN, que significa Comprehensive Perl. Archive Network y contiene una gran cantidad de módulos Perl para que los use. Es una comunidad o red de un gran número de desarrolladores que contribuyen con dichos módulos. Al instalar soporte para módulos CPAN en su módulo Perl, puede hacer uso de los módulos CPAN y facilitar su trabajo. La mayoría de los módulos Perl están escritos en Perl, algunos usan XS (están escritos en C) por lo que requieren un compilador C (es fácil configurarlo, no se asuste. Los módulos pueden tener dependencias de otros módulos (casi siempre de CPAN) y no se pueden instalar sin ellos (o sin una versión específica de ellos). Vale la pena leer detenidamente la documentación para las opciones que se indican a continuación. Muchos módulos de CPAN ahora requieren una versión reciente de Perl (versión 5.8 o superior). Instale cpanminus, un script para obtener, descomprimir, compilar e instalar módulos de CPAN para facilitar la instalación de otros módulos (nos lo agradecerá más adelante). Para instalar aplicación-cpanminus módulos perl, en la línea de comando escriba:

cpan App::cpanminus

cpan App::cpanminus Asegúrese de tener conexión a Internet mientras se descargan e instalan los módulos Perl.

Instalación de módulos cpan menos

Ahora instale cualquier módulo:

cpan –i <Module_Name>.		

Veamos un ejemplo de instalación de un módulo Archivo::Datos (Es una interfaz para acceder a los datos del archivo).

Instalación de módulos cpan menos

variable perl

Ahora hablaremos de variables. Puede imaginar una especie de contenedor similar a una variable que contiene uno o más valores. Una vez definida, el nombre de la variable sigue siendo el mismo, pero el valor o los valores cambian una y otra vez.

Hay 3 tipos de variables:

Tipos de variables en Perl

Tipos de variables en Perl

Los más fáciles son los escalares, y este es nuestro tema de hoy.

Variable escalar

Este tipo de variable tiene un único valor.

Su nombre comienza con un signo de dólar y un identificador de Perl (es el nombre de nuestra variable).

Variable escalar en Perl

Variable escalar en Perl

Convenio de denominación

Si está familiarizado con otros lenguajes de programación, sabrá que existen ciertas reglas para nombrar variables. De manera similar, Perl tiene tres reglas para nombrar escalares.

  1. Todos los nombres escalares comenzarán con $. Es fácil recordar anteponer cada nombre con $. Piense en ello como un $ escalar.
  2. Como PHP. después del primer carácter $, que es especial en Perl, se permiten caracteres alfanuméricos, es decir, de la A a la Z, de la A a la Z y del 0 al 9. También se permite el carácter de subrayado. Utilice guión bajo para dividir los nombres de las variables en dos palabras. "Pero el primer carácter no puede ser un número"
  3. Aunque los números pueden ser parte del nombre, no pueden ir inmediatamente después de $. Esto implica que el primer carácter después de $ será una letra o el guión bajo. Los que vienen de C/C++ antecedentes deben ser capaces de reconocer inmediatamente la similitud. Ejemplos

Ejemplo de Perl:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Estos, sin embargo, no son nombres legales de variables escalares.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

La regla general dice que cuando Perl tiene solo uno de algo, es un escalar. Los escalares se pueden leer desde dispositivos y podemos usarlos en nuestros programas.

Dos tipos de tipos de datos escalares

  1. Numbers
  2. Tangas

Numbers:

En este tipo de datos escalares podríamos especificar:

  • números enteros, simplemente son números enteros, como 2, 0, 534
  • Los números de punto flotante son números reales, como 3.14, 6.74, 0.333.

Variables numéricas en Perl

Nota: En general, el intérprete de Perl ve los números enteros como números de punto flotante. Por ejemplo, si escribe 2 en sus programas, Perl lo verá como 2.0000

Literales enteros:

Consta de uno o más dígitos, opcionalmente precedidos por un signo más o menos y que contienen guiones bajos.

Ejemplos de Perl:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Como puedes ver, no es nada especial. Pero créanme, este es el tipo de escalar más común. Están por todas partes.

Literales de punto flotante:

Consta de dígitos, opcionalmente menos, punto decimal y exponente.

Ejemplos de Perl:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E – this means the same the lowercase version -3.6e-20

Literales de punto flotante en Perl

Representación octal, hexadecimal y binaria:

Es una alternativa al sistema decimal. Permítanme mostrarles la representación octal, hexadecimal y binaria. Una breve tabla presenta toda la información importante sobre estos extraños estilos:

Representación El pareo de bases Procedido por
Octal 8 0 (cero)
Hexadecimal 16 0x
Binario 2 0b

Ejemplos de Perl:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Todos estos valores para Perl significan lo mismo. Perl no almacena los valores en el mismo formato. Convertirá internamente estos valores hexadecimales, binarios y octales a decimales.

La asignación es la operación más común en un escalar y es muy sencilla. Perl utiliza para ello el signo igual. Toma un valor de la expresión del lado derecho y lo coloca en nuestra variable.

Echemos un vistazo a ejemplos:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Es más, puedes poner en la variable no sólo un número, sino también una expresión.

$z = 6 + 12               # give $z value of 18

Tangas

Cuerdas: También es un tipo de escalar muy simple.

La longitud máxima de una cadena en Perl depende de la cantidad de memoria que tenga la computadora. No hay límite para el tamaño de la cadena; cualquier cantidad de caracteres, símbolos o palabras pueden formar sus cadenas. La cadena más corta no tiene caracteres. El más largo puede llenar toda la memoria del sistema. Los programas Perl se pueden escribir completamente en un juego de caracteres ASCII de 7 bits. Perl también le permite agregar cualquier conjunto de caracteres de 8 o 16 bits, también conocido como. caracteres no ASCII dentro de cadenas literales. Perl también ha añadido soporte para Unicode UTF-8.

Tipos de cadenas en Perl

Al igual que los números, existen dos tipos diferentes de cadenas:

  • Literales de cadena con comillas simples
  • Double comillas literales de cadena

Literales de cadena entre comillas simples

Las comillas simples se utilizan para encerrar datos que desea que se tomen literalmente. Un breve ejemplo y todo debería quedar claro:

Ejemplos de Perl:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

Salida:

es $num

Aquí, debido a las comillas simples, el valor de $num no se toma y los caracteres literales '$','n', 'u' y 'm' se agregan al valor de $txt.

Double-literales de cadena entre comillas

Double Las comillas se utilizan para encerrar datos que deben interpolarse antes de procesarse. Esto significa que los caracteres de escape y las variables no se insertan simplemente de manera literal en operaciones posteriores, sino que se evalúan en el momento. Los caracteres de escape se pueden utilizar para insertar nuevas líneas, tabulaciones, etc.

Ejemplos de Perl:

$num = 7; 
$txt = "it is $num"; 
print $txt;

Salida:

es 7

Aquí, debido a las comillas dobles, el valor de $num se suma al valor de $txt

Double-Las comillas interpolan variables escalares y de matriz, pero no hashes. Por otro lado, puedes usar comillas dobles para interpolar partes de matrices y hashes.

Misterioso \n

Considere el siguiente programa

Ejemplos de Perl:

print "hello \n";

Salida:

¡Hola

Perl no muestra sólo "hola\n", sino sólo "hola". ¿Por qué? Porque '\n' es un signo especial y significa que desea ir a una nueva línea mientras muestra el texto en su programa. imprimir “hola\n nueva línea”; Siguiente pregunta: ¿hay alguna otra señal especial? ¡Sí lo son! Pero no te preocupes, sólo unos pocos. Consulta la siguiente tabla

Construcción Descripción
\n nueva línea
\r volvemos
\t de la pestaña.
\f formulario
\b Retroceso
\a campana
\e escapar
\ 007 cualquier valor octal ASCII (aquí, 007 = campana)
\x7f cualquier valor hexadecimal (aquí, 7f = eliminar)
\\ barra invertida
\ " cita doble
\l siguiente letra minúscula
\L minúsculas todas las letras siguientes hasta \E
\u siguiente letra mayúscula
\U mayúsculas todas las letras siguientes hasta \E
\E Terminar \L, \U

Lo sé, no hay “sólo unos pocos”... Pero créeme, debes saber sólo

Cadenas variables

Es la misma operación que vemos en la asignación de números. Perl obtiene nuestra cadena del lado derecho del signo igual y la coloca en una variable.

Ejemplos de Perl:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

Salida:

tutorial315

Como puedes ver, puedes poner números y cadenas en las mismas variables. No hay clases de variables.

Concatenación de cadenas (punto):

El operador de concatenación “.” une dos o más cadenas. ¡Recuerde! Si la cadena contiene comillas, retornos de carro o barras invertidas, todos estos caracteres especiales deben escaparse con una barra invertida.

Perl ' ' variable Ejemplos:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

Salida:

Tom es el gato favorito de mamá.

Las cuerdas

“$a”, “$b”, se concatenan y almacenan en “$c” utilizando el operador “.”

En el final…

Conversión entre Numbers y cuerdas:

Como ya sabes, Perl convierte automáticamente números en cadenas según sea necesario. ¿Cómo sabe Perl lo que necesitamos en este momento? Es muy sencillo: todo depende del operador (hablaremos de operadores más adelante, pero hay que aceptar que hay muchos operadores, diferentes para números y cadenas). Si un operador espera un número, Perl utilizará el valor como un número. Si un operador espera una cadena, Perl utilizará el valor como una cadena. En otras palabras, no tienes que preocuparte por este tipo de conversión. Un breve ejemplo y todo debería quedar claro:

Ejemplos de Perl:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

Salida:

71

el valor de $string se convierte en un número entero y se suma al valor de $number.

El resultado de la suma, 71, se asigna a $resultado.

Alcance de una variable – Modificadores de acceso

Podemos declarar un escalar en cualquier parte del programa. Pero necesitas especificar un modificador de acceso.

Hay 3 tipos de modificadores.

  1. my
  2. local
  3. nuestro

Mi: Con esto puedes declarar cualquier variable que sea específica dentro del bloque. es decir, dentro de las llaves.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Ninguna salida

¡El resultado del programa no será nada!

Tutorial PERL para principiantes - Guía completa

En el ejemplo anterior, verá que hay dos variables declaradas, una está dentro del bloque if ($var_2) y la otra está fuera del bloque If ($var). La variable que se declara fuera del bloque será accesible para el bloque if, pero la variable que se declaró dentro del bloque if no será accesible para el programa externo.

Local: usando esto podemos enmascarar los mismos valores de variable a diferentes valores sin cambiar realmente el valor original de la variable, supongamos que tenemos una variable $a a la que se le asigna el valor 5, en realidad puedes cambiar el valor de esa variable volver a declarar la misma variable usando la palabra clave local sin alterar el valor original de la variable que es 5. Veamos cómo funciona esto con un ejemplo.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

La salida del programa anterior será de esta manera.

local, $var = 3

global, $var = 5

De esta forma podemos cambiar el valor de la variable sin afectar el valor original.

Nuestro: una vez que se declara una variable con el modificador de acceso "nuestro", se puede utilizar en todo el paquete. Supongamos que tiene un módulo Perl o un paquete test.pm que tiene una variable declarada con alcance nuestro. Se puede acceder a esta variable en cualquier script que utilice ese paquete.

Si se toma en serio la programación en Perl, debe comenzar su programa con

#! / usr / local / bin / perl

uso estricto

Esto le ayudará a escribir un código mejor y más limpio. "Usar estricto" activa el pragma estricto que le hará declarar sus variables con mi palabra clave.

Esta es una buena práctica de programación.

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Resultado: Error

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

Salida:

10

Matriz Perl

¿Qué es la matriz Perl?

Una matriz es un tipo especial de variable que almacena datos en forma de lista; se puede acceder a cada elemento utilizando el número de índice que será único para todos y cada uno de los elementos. Puede almacenar números, cadenas, valores flotantes, etc. en su matriz. Esto se ve muy bien, ¿cómo creamos una matriz en Perl? En Perl, puede definir una matriz utilizando el carácter '@' seguido del nombre que desea darle. Consideremos la definición de una matriz en Perl.

mi @matriz;

Así es como definimos una matriz en Perl; Quizás estés pensando en cómo necesitamos almacenar datos en él. Existen diferentes formas de almacenar datos en una matriz. Esto depende de cómo lo vayas a utilizar.

my @array=(a,b,c,d);
print @array;

Salida:

ABCD

Esta es una matriz con 4 elementos.

El índice de la matriz comienza desde 0 y termina hasta su tamaño máximo declarado; en este caso, el tamaño máximo del índice es 3.

Ejemplo de matriz Perl

Ejemplo de matriz Perl

También puedes declarar una matriz de la forma anterior; la única diferencia es que almacena datos en una matriz considerando un espacio en blanco como delimitador. Aquí, qw() significa palabra entre comillas. El significado de esta función es generar una lista de palabras. Puede utilizar qw de varias formas para declarar una matriz.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

Salida:

abcdpqrsvxyz

Supongamos que desea asignar un valor al 5th elemento de una matriz, ¿cómo vamos a hacer eso?

$matriz [4] ='e';

Matriz secuencial

Las matrices secuenciales son aquellas en las que se almacenan datos de forma secuencial. Supongamos que desea almacenar entre 1 y 10 números o letras de la a a la z en una matriz. En lugar de escribir todas las letras, puede probar algo como lo siguiente:

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

Salida:

12345678910

Tamaño de la matriz Perl

Tenemos una matriz que ya está disponible y no sabes cuál es el tamaño de esa matriz, entonces, ¿cuál es la forma posible de encontrarla?

@array= qw/a b c d e/;
print $size=scalar (@array);

¿Podemos obtener el tamaño de una matriz sin usar funciones? Si podemos.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

Salida:

5

5

Matriz dinámica

El método anterior para declarar una matriz se llama matrices estáticas, donde conoces el tamaño de una matriz.

¿Qué es la matriz dinámica?

Los arreglos dinámicos son aquellos que declaras sin especificar ningún valor en ellos. Entonces, ¿cuándo exactamente almacenamos valores en esa matriz? Sencillo, los almacenamos durante el tiempo de ejecución. Aquí hay un programa simple para eso.

Usaremos algunas funciones incorporadas de Perl para realizar esta tarea.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}

Salida:

Es

tipo de dinámica

micrófono

rr

y

La función de división divide el contenido de la cadena en una matriz según el delimitador que se le proporciona. Esta función también eliminará el delimitador de la cadena, en este caso es ‘a’;

Push, Pop, shift, unshift para matrices Perl:

Estas funciones se pueden utilizar en Perl para agregar/eliminar elementos de una matriz.

  • Perl Push: agrega un elemento de matriz al final de una matriz existente.
  • Perl Pop: elimina el último elemento de una matriz.
  • Perl Shift: elimina el primer elemento de una matriz.
  • Perl Unshift: agrega un elemento al comienzo de una matriz.

Funciones de matriz en Perl

Veamos un ejemplo donde podemos usar las siguientes funciones.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

Salida:

1º: lunes martes miércoles

2.º cuando se empuja: lunes martes miércoles jueves

3º cuando no hay turno: Viernes, lunes, martes, miércoles y jueves

4º cuando pop: viernes lunes martes miércoles

5º cuando turno: Lun Mar Mié

Hashes de Perl

¿Por qué necesitamos Hash?

Ya aprendimos sobre escalares y matrices en secciones anteriores.

¿Qué hacen exactamente los escalares? Sólo almacena números enteros y cadenas.

¿Qué hacen exactamente las matrices? Es una colección de escalares, donde se accede a cada elemento de una matriz mediante índices. Pero, ¿es buena idea utilizar una matriz cuando tienes cientos y miles de registros? Olvidaremos qué índice tiene qué valor. Para superar esta situación tenemos algo como perl hash.

¿Qué son los hashes?

Un hash también puede contener tantos escalares como pueda contener la matriz. La única diferencia es que no tenemos ningún índice, sino claves y valores. Se puede declarar un hash, comenzando con % seguido del nombre del hash. Veamos un ejemplo de cómo podemos definir un hash de Perl y cómo podemos diferenciarlo de una matriz.

Considere un ejemplo de tres personas y sus edades están representadas en una matriz.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

Salida:

Sainath33Krishna24Shruthi25

De esta manera, es difícil saber las edades individuales, ya que necesitamos recordar tanto las ubicaciones del índice del nombre como la edad de todas las personas. Puede que sea sencillo cuando tienes 3 nombres, pero ¿cuándo tienes 1000 o más? Tu sabes la respuesta.

Hashes en Perl

Esto lo podemos superar usando un hash.

Ejemplo de hash:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

Salida:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Ahora hemos declarado un hash, ¡¡genial!! Pero, ¿cómo accedemos a él o lo imprimimos? Se debe acceder a cada elemento en hash con su clave asociada para la cual habrá un valor asignado. Entonces, hay un mapeo uno uno entre cada clave y valor en el hash.

Para imprimir la edad de cualquier persona, sólo necesita recordar el nombre de esa persona.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Quizás te hayas preguntado por qué usé $hash{KeyName}, recuerda que un hash es una colección de escalares. Entonces, podemos usar $ que representa un escalar para acceder a cada elemento hash.

Ejemplo de hash en Perl

Nota: Cada clave en el hash debe ser única o, de lo contrario, anulará su valor asignado previamente.

¿Cómo podemos asignar un hash a otro hash? Simple, de la misma manera que lo hacemos para

También podemos imprimir el hash completo.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

Salida:

Tom23

Agregar hashes de Perl

Como puede ver, ya tenemos un hash %newHash y ahora necesitamos agregarle más entradas.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

Salida:

Jim25John26Harry27

Tecla de eliminación de Perl

Es posible que desees eliminar una entrada de un hash. Así es como podemos hacerlo.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Eliminar es una función incorporada de Perl. Aquí veremos un ejemplo de cómo asignar un hash a una matriz.

@array=%newHash;
print "@array";

Nota: Siempre que imprima un hash o cuando almacene hash en una matriz. El orden siempre puede diferir. No es siempre lo mismo.

Podemos asignar solo claves o valores de un hash a una matriz.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Para eliminar todas las entradas en el hash, podemos asignar directamente el hash a nulo.

%newHash=();# Esto redefinirá el hash sin entradas.

Declaraciones condicionales de Perl

Podemos usar declaraciones condicionales en Perl. Entonces, ¿qué son las declaraciones condicionales? Las declaraciones condicionales son aquellas en las que realmente verifica que se cumplan algunas circunstancias en su código.

Piense en un ejemplo: está comprando algunas frutas y no le gusta que el precio supere los 100 dólares. Entonces, la regla aquí es 100 dólares.

Perl admite dos tipos de declaraciones condicionales; son si y a menos que.

Perl si

Si se ejecutará el bloque de código, cuando la condición sea verdadera.

Declaraciones condicionales de Perl

my $a=5;
if($a==5)
{
   print "The value is $a";
}

Salida:

5

Perl si no

Esto luce bien. Pensemos en una situación en la que $a no es 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

Salida:

El valor es 10 —FALLO

De esta manera podemos controlar solo una condición a la vez. ¿Es una limitación? No, también puedes controlar varias condiciones usando if… elsif… else.

Perl si no

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block – The value is $a";
}

Salida:

Bloque elsif ejecutado: el valor es 5

En el caso anterior, el bloque elsif se ejecutará ya que $a es igual a 5.

Podría haber situaciones en las que los bloques de código if y elsif fallen. En este escenario, se ejecutará el bloque de código else. De hecho, puedes eliminar la verificación del código else si no deseas incluirlo.

Perl anidado si

En este caso, puede utilizar el bloque de código if en un bloque de código if más.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block – The value is $a";
    }

Salida:

Dentro del primer bloque else: el valor es 1

Ejecute el mismo código cambiando el valor de $a; Puedes descubrir el resto.

Perl a menos que

Ya tienes una idea de qué pasa si (si la condición es verdadera, ejecutará el bloque de código). A menos que sea lo opuesto a si, a menos que el bloque de código se ejecute si la condición es falsa.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

Salida:

Dentro del primer bloque else: el valor es 1

Adivina cuál será el resultado. ¡¡¡¡¡Tienes razón!!!!!. La salida será la declaración de impresión del bloque else. Debido a que la condición en el bloque de código a menos que sea verdadera, recuerde que el bloque a menos que se ejecute solo si la condición es falsa. Cambie el valor de $a y ejecute el código, verá la diferencia.

Perl usando si

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

Salida:

Dentro del bloque else

Usando a menos que

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

Salida:

Dentro a menos que bloquee

Bucles de Perl: estructuras de control

Perl admite estructuras de control similares a otros lenguajes de programación. Perl admite cuatro tipos de estructuras de control para, foreach, while y Until. Usamos estas declaraciones para ejecutar repetidamente algún código.

Para bucle Perl

El bloque de código se ejecutará hasta que se cumpla la condición. Tomemos un ejemplo de cómo hacer un bucle en Perl con una matriz.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

Salida:

El valor del índice de matriz 0 es 1

El valor del índice de matriz 1 es 2

El valor del índice de matriz 2 es 3

El valor del índice de matriz 3 es 4

El valor del índice de matriz 4 es 5

El valor del índice de matriz 5 es 6

El valor del índice de matriz 6 es 7

El valor del índice de matriz 7 es 8

El valor del índice de matriz 8 es 9

El valor del índice de matriz 9 es 10

Aquí, en la expresión for (), se incluyen muchas declaraciones. Hay un significado para cada uno de ellos.

para (inicialización; condición; incrementando)

Aquí hay otra forma de usar for.

for(1..10)
{
    print "$_ n";
    print "\n";
}

Salida:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

La declaración for each se puede utilizar de la misma manera que for; la principal diferencia es que no tenemos ninguna verificación de condición ni incrementos en esto.

Tomemos el mismo ejemplo con foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

Salida:

El valor es 1

El valor es 2

El valor es 3

El valor es 4

El valor es 5

El valor es 6

El valor es 7

El valor es 8

El valor es 9

El valor es 10

Foreach toma cada elemento de una matriz y asigna ese valor a $var para cada iteración. También podemos usar $_ para lo mismo.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

Salida:

El valor es 1

El valor es 2

El valor es 3

El valor es 4

El valor es 5

El valor es 6

El valor es 7

El valor es 8

El valor es 9

El valor es 10

Esto se ve bien para acceder a matrices. ¿Qué hay de Hashes? ¿Cómo podemos obtener claves y valores hash usando foreach?

Podemos usar foreach para acceder a las claves y valores del hash haciendo un bucle.

Para bucle en Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

Salida:

Mickey

tom

alemán

Quizás se pregunte por qué usamos claves en foreach(). Keys es una función incorporada de Perl donde podemos acceder rápidamente a las claves del hash. ¿Qué tal los valores? Podemos usar la función de valores para acceder a los valores del hash.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

Salida:

el valor es 24

el valor es 23

el valor es 25

Perl mientras

El bucle While de Perl es una estructura de control, donde el bloque de código se ejecutará hasta que la condición sea verdadera.

El bloque de código saldrá solo si la condición es falsa.

Tomemos un ejemplo del bucle While de Perl.

Mientras bucle en Perl

Aquí hay un problema que requerirá la entrada del usuario y no saldrá hasta que se proporcione el número "7".

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

Salida:

Adivina un número entre 1 y 10

9

Adivina un número entre 1 y 10

5

Adivina un número entre 1 y 10

7

Adivinaste el número de la suerte 7

En el ejemplo anterior, la condición while no será verdadera si ingresamos una entrada distinta de "7".

Si ve cómo funciona while aquí, el bloque de código se ejecutará solo si la condición en un momento es verdadera.

Perl hacer mientras

El bucle Do while se ejecutará al menos una vez incluso si la condición en la sección while es falsa.

Tomemos el mismo ejemplo usando do while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

Salida:

10

9

8

7

6

5

4

3

2

1

Ahora el valor es menor que 1

Perl hasta

Hasta que el bloque de código sea similar a menos que en una declaración condicional. Aquí, el bloque de código se ejecutará solo si la condición hasta que el bloque sea falsa.

Tomemos el mismo ejemplo que usamos por un tiempo.

Aquí hay un problema que requerirá la entrada del usuario y no saldrá hasta que el nombre proporcionado no sea "sai".

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

Salida:

Ingrese cualquier nombre sai

Perl hacer hasta:

Hacer hasta se puede usar solo cuando necesitamos que una condición sea falsa y debe ejecutarse al menos una vez.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

Salida:

Ingrese cualquier nombre Howard

Ingrese cualquier nombre Sheldon

Ingrese cualquier nombre sai

Ejecute códigos de ejemplo while, do- while, Until y do-until para ver la diferencia.

Perl Operator

¿Qué es Opera¿colina?

OperaLos indicadores en lenguaje informático indican una acción que se puede realizar sobre algún conjunto de variables o valores que la computadora puede entender. Perl ha incorporado la mayoría de los Operaoperadores del lenguaje C. Perl tiene muchos operadores en comparación con otros lenguajes de programación. OperaLos operadores se clasifican como operadores aritméticos, lógicos, relacionales y de asignación.

Aritmética Operatores:

Los operadores aritméticos son aquellos que se pueden utilizar para realizar algunas operaciones matemáticas básicas. Estos operadores aritméticos son operadores binarios en los que necesitamos dos argumentos para realizar una operación básica. También podemos utilizar operadores unarios para otras operaciones básicas; puedes ver la diferencia en los ejemplos a continuación.

Operator Descripción Ejemplo

+

Operación de suma utilizada para sumar dos valores o variables.

manteniendo valores

$x=5+6; # o

$y=6;

$z=$x+$y;

Operador de resta utilizado para restar dos valores o variables que contienen valores

$x=6-5; # o

$y=6;

$z=$x-$y;

*

Operador de multiplicación utilizado para multiplicar dos valores o variables que contienen valores.

$x=6*5; # o

$y=6;

$z=$x*$y;

/

Operador de división utilizado para dividir dos valores o variables que contienen valores

$x=36/6; # o

$y=6;

$z=$x/$y;

**

El operador exponencial se utiliza para proporcionar el exponente y obtener el valor.

Ej: 22 = 43 = 27

$x=5**5; # o

$x=4;

$y=2;

$z=$x**$y;

%

Operador de módulo utilizado para obtener el recordatorio durante la división de dos valores o variables que contienen valores

$x=5%2; # o

$x=10;

$y=2;

$z=$x % $y;

++

Operador de adición unaria para incrementar el valor de una variable en 1

$x=5;

$ x ++;

Or

++$x;

-

Operador de resta unaria para decrementar el valor de una variable en 1

$x=5;

$x–; # disminución posterior

Or

–$x;# predisminución

Ejemplo para completar todas las operaciones anteriores.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

Salida:

La suma de 10 y 2 es 12

sub de 10 y 2 es 8

Mul de 10 y 2 es 20

div de 10 y 2 es 5

Exp de 10 y 2 es 100

Mod de 10 y 2 es 0

Asignación Operatores:

Los operadores de asignación simplemente asignan valores a las variables, pero hay una cosa más que debemos recordar aquí: los operadores de asignación también realizarán operaciones aritméticas y asignarán el nuevo valor a la misma variable en la que se realiza la operación.

Operator Descripción Ejemplo

+=

Operador de suma utilizado para sumar y asignar el valor a la misma variable

$x=4;

$x+=10;

-=

Operador de resta utilizado para restar y asignar el valor a la misma variable

$x=4;

$x-=10;

*=

Operador de multiplicación utilizado para sumar y asignar el valor a la misma variable

$x=4;

$x*=10;

/=

Operador de división utilizado para dividir y asignar el valor a la misma variable

$x=4;

$x/=10;

** =

Operador exponencial utilizado para obtener el exponente y asignar el valor a la misma variable

$x=4;

$x**=10;

%=

Operador de módulo utilizado para obtener un recordatorio durante la división y asignar el valor a la misma variable

$x=10;

$x%=4;

Ejemplo para completar todas las operaciones anteriores.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

Salida:

Sumar = 15

Sub= 10

Mul = 50

División = 10

Lógico y relacional Operatores:

Perl utiliza operadores lógicos para comparar números y cadenas. La mayoría de las veces, los operadores lógicos se utilizan en sentencias condicionales.

Lógico y relacional OperaTores en Perl

Lógico y relacional OperaTores en Perl

Operator Descripción

==o ecuación

OperaTor utilizado para comprobar si ambas variables son iguales.

!=O no

OperaTor utilizado para comprobar si ambas variables no son iguales.

> o gt

Operator utilizado para comprobar si

A es mayor que B

<o lt

Operator utilizado para comprobar si

A es menor que B

>=o ge

Operator utilizado para comprobar si

A es mayor o igual que B

<=o le

Operator utilizado para comprobar si

A es menor o igual que B

|| o o

OperaTor utilizado para comprobar que A o B mantienen el valor.

&&o y

OperaTor utilizado para comprobar que tanto A como B mantienen el valor.

Tomemos un ejemplo donde podamos explicar todos los escenarios.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

Salida:

Verdadero: igual a 5 y 5

Verdadero: no es igual a 6 y 7

Verdadero: 7 mayor que 6

Verdadero: 6 menos que 7

Verdadero: 6 menos que 7

Verdadero: 7 mayor que 6

Puede ver ejemplos de operadores lógicos en secciones posteriores.

Variables especiales de Perl

¿Qué son las variables especiales de Perl?

Las variables especiales en Perl son aquellas que tienen algún significado predefinido. Estas variables se indican con símbolos de puntuación o nombre real. Tenemos una variable especial para todas las variables admitidas por Perl, como variables especiales escalares, variables especiales de matriz y variables especiales hash. La mayoría de las variables especiales que utilizamos son escalares.

Cuando queremos usar la variable especial con su nombre, entonces tenemos que cargar un módulo de Perl 'use English', para decir explícitamente al intérprete de Perl que vamos a usar variables especiales usando su nombre.

Variables especiales escalares

Variable Descripción

$_$ARG

Esta es la variable predeterminada que almacena los valores actuales.

$0 o $PROGRAM_NAME

Almacena el nombre de archivo del script Perl.

$/

El separador de registros de entrada tiene un valor predeterminado de "\n", que es un carácter de nueva línea.

$.

Contiene el número de línea actual del archivo que se está leyendo.

$,

Separador de campo de salida, esto lo utiliza principalmente la declaración print(). De forma predeterminada, el valor de esto se establece en 0, podemos cambiar el valor de esta variable.

$\

Separador de registros de salida, el valor de esta variable estará vacío; Podemos asignarle cualquier valor, que será utilizado por la declaración print() al imprimir la salida.

$#

Esta variable se utiliza para el formato de salida al imprimir números.

$%$FORMAT_PAGE_NUMBER

Contendrá el número de página actual del archivo leído.

$=$FORMAT_LINES_PER_PAGE

Mantendrá la longitud de la página actual del archivo leído.

$-$FORMAT_LINES_LEFT

Mantiene el valor del número de líneas que quedan para imprimir desde la página.

$~$FORMAT_NAME

Nombre del formato: mantiene el formato de la salida seleccionada actualmente, de forma predeterminada, el nombre del identificador del archivo.

$^$FORMAT_TOP_NAME

Contiene el valor del formato de encabezado del controlador de archivos; de forma predeterminada, el valor será _TOP seguido del nombre del controlador de archivos.

$|$OUTPUT_AUTOFLUSH

El valor predeterminado es cero; esto se utiliza para vaciar el búfer de salida después de cada escritura() o impresión().

$$

Contendrá el número de proceso en ejecución del intérprete de Perl.

$?

Código de estado: Llamada de tubería y sistema. El estado de retorno del comando ejecutado.

$&$ PARTIDO

Usado en expresiones regulares, contendrá una cadena de la última coincidencia de patrón exitosa.

$`$PREPARTO

Usado en expresiones regulares, contendrá una cadena precedida por la última coincidencia de patrón exitosa.

$'$POSTMATCH

Usado en expresiones regulares, contendrá una cadena seguida de la última coincidencia de patrón exitosa.

$+$LAST_PAREN_MATCH

Contiene la cadena del último corchete que coincide con la última búsqueda de patrón.

$

$1, $2, $3…. Mantiene los valores del patrón coincidentes en orden.

$[

Primer índice: matriz, una subcadena.

$]

Una versión de Perl.

PS

El separador utilizado para los elementos de la lista; por defecto, el valor es un espacio en blanco.

$;

Separador de subíndices utilizado en matrices multidimensionales

$!

En contexto numérico, imprime el número de error. En el contexto de la cadena, imprima el error.

$@

Contendrá la información del error de sintaxis, que se usa cuando se usa eval().

$<

Contiene el UID real (ID de usuario) del proceso que ejecuta el script.

$>

Contiene el UID efectivo del proceso que ejecuta el script.

$(

Contiene el GID real (ID de grupo) del proceso que ejecuta el script.

$)

Contiene el GID efectivo del proceso que ejecuta el script.

$^D$DEPURACIÓN

Mantiene el valor actual de los indicadores de depuración.

$ ^ C

Mantiene el valor actual de la bandera cuando se utiliza el modificador de línea de comando –c.

$^F

El descriptor máximo de archivos del sistema, por valor predeterminado, está establecido en 2

$^I$INPLACE_EDIT

Mantiene el valor del modificador de línea de comando –i.

$^millones

El grupo de memoria especial se puede utilizar cuando el script Perl muere debido a un error de falta de memoria.

$^O$NOMBREOS

OperaSe almacena la información del sistema de encendido. 'Linux' para sistemas Linux, 'mswin32' para Windows .

$^T$HORA BASE

El tiempo en que se ejecutan los scripts en segundos.

$^W$ADVERTENCIA

El valor actual del modificador de línea de comando –w. Interruptor de advertencia.

$ARGV

Nombre del archivo actual, cuando se utiliza <>.

Variables especiales de matriz:

Variable Descripción

@C ª

Contiene una lista de rutas donde se pueden consultar los módulos o scripts de la biblioteca Perl mientras se ejecuta el script actual. Este @INC se utiliza por uso y requiere declaraciones para buscar en esas rutas los módulos de la biblioteca.

@ARGV

Almacena los argumentos de la línea de comando pasados.

@_

Se utiliza en subrutinas, mientras se pasan los parámetros a las subrutinas.

@F

Esta es la matriz en la que se almacenan las líneas de entrada cuando se divide automáticamente –a (se utiliza el cambio de línea de comando).

Variables especiales hash:

Variable Descripción

%C ª

El nombre del archivo serán las claves; Los valores serán la ruta a esos archivos. Usado por hacer, usar y requerir.

% ENV

Variables ambientales del sistema.

%SIG

Signals manejador.

Expresión regular Perl

¿Qué es la expresión regular?

Las expresiones regulares de Perl son lo suficientemente sólidas para hacer coincidir los patrones de cadena dentro de una declaración o un grupo de declaraciones. Las expresiones regulares se utilizan principalmente en el análisis de texto, la coincidencia de patrones y mucho más según el requisito. Tenemos ciertos operadores, que se utilizan especialmente mediante la vinculación de patrones de expresiones regulares =~ y !~. Estos son operadores de prueba y asignación.

Expresión Regular Operatoros

Expresión Regular OperaTores en Perl

Expresión Regular OperaTores en Perl

  • Coincidencia de Perl — m//
  • Sustituto de Perl – s///
  • Transliteración de Perl – tr///

Antes de continuar, necesitamos saber algunas cosas sobre las expresiones regulares; Hay ciertas cosas como metacaracteres y comodines en la sintaxis de Perl Regex.

Char Significado

\

Especial o cotización

*

Coincide con 0 o más personajes

+

Coincide con 1 o más personajes

?

Coincide con 0 o 1 carácter

|

Se puede utilizar para combinar patrones alternativos.

()

Se utiliza para almacenar el patrón coincidente.

[]

Se puede pasar un conjunto de caracteres. Se utiliza específicamente para números y alfabetos.

{}

Se utiliza para proporcionar la cantidad de veces que se puede realizar el partido.

^

Inicio de la cadena

$

Fin de cadena

\w

Se utiliza para hacer coincidir un solo carácter o palabra que puede ser alfanumérica, incluido "_"

\W

Coincide con cualquier cosa que no sea alfanumérica

\s

Se utiliza para unir espacios en blanco.

\S

Coincidir con cualquier cosa que no sea espacio en blanco

\d

Coincidir con números. No con valores decimales ni negativos.

\D

Coincide con cualquier cosa que no sean números.

\t

Coincidir con el espacio de la pestaña

\n

Coincidir nueva línea

Los anteriores son el conjunto de caracteres que se pueden utilizar durante la coincidencia de patrones.

Veamos algunos ejemplos.

Considere una situación en la que el usuario proporciona alguna entrada durante la ejecución del script y queremos verificar si el usuario ingresó algún nombre como entrada o no. Tenemos que escribir una sintaxis de expresión regular para extraer su nombre e imprimirlo.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

Salida:

Patrón encontrado

Aquí, hemos escrito la expresión regular como /.*(Guru99).*/.* coincide con todos los caracteres de una cadena. Un '.' en la coincidencia de expresiones regulares de Perl se refiere a cualquier carácter, incluido el espacio.

Veamos exactamente cómo podemos construir una expresión regular.

Considere un ejemplo de una cadena de varias palabras, dígitos y símbolos especiales como este "Hola a todos, este es mi número: +91-99298373639";

Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Espacio de palabras espacio de palabras espacio de palabras espacio de palabras espacio de palabras espacio de palabras carácter especial: espacio carácter especial+dígitos carácter especial –dígitos.

Coincidencia de Perl Operatoros

Los operadores de coincidencia se utilizan para hacer coincidir una cadena dentro de alguna declaración o en una variable.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

Salida:

su verdadero

Este pequeño código imprimirá 'true', ya que el patrón de coincidencia de Perl identifica la cadena en una variable. Básicamente, Perl busca el texto proporcionado en // en toda la cadena, incluso si lo encuentra en un solo lugar, devolverá 'true'. El patrón puede estar en cualquier parte de la variable. Podemos intentar reemplazar =~ con !~ para ver la diferencia entre esos dos operadores.

Sustitución de Perl Operator

Este operador se puede utilizar para buscar y reemplazar cualquier carácter por un carácter nulo o por algún otro carácter.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

Salida:

violonchelo como estas

Nota: También podemos utilizar cualquier cadena que coincida con un patrón, como hicimos antes en este operador de sustitución. Aquí usamos 'gi', g-globalmente, i-ignora mayúsculas y minúsculas.

Traducción de Perl Operator

Esto es similar a la sustitución, pero no utiliza ninguna expresión regular de Perl, sino que podemos pasar directamente el valor o una palabra que queremos reemplazar.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

Salida:

hola vaca eres tu

E/S de archivos Perl

Perl fue diseñado para manipular archivos y operaciones de E/S de manera efectiva. La principal ventaja de Perl es el análisis y manejo de archivos. Existen muchas funciones y operadores incorporados que se utilizan durante el manejo de archivos en Perl.

Básicamente, las operaciones con archivos que se realizan con Perl se realizan mediante FILEHANDLE. Tenemos que definir este FILEHANDLE durante la apertura de un archivo, ya sea para lectura o escritura.

En este tutorial de script Perl, aprenderá:

Perl Abrir archivo

Podemos abrir un archivo usando la función open() disponible en Perl.

open(FILEHANDLE, "filename or complete path of the file");

Ahora que hemos abierto un archivo, ahora surge una pregunta. ¿Es para leer o escribir?

Archivo de lectura de Perl y archivo de escritura de Perl

Perl tiene ciertos modos que deben usarse para leer, escribir o agregar un archivo.

Read – open(my $fh,"<filename or complete path of the file"); 
Write – open(my $fh,">filename or complete path of the file");
Append – open(my $fh,">>filename or complete path of the file");

Algunos ejemplos para leer un archivo:

Leyendo archivo en Perl

Considere que tenemos un archivo perl con el nombre file.txt y que tiene pocas líneas de texto. Necesitamos abrir este archivo e imprimir el mismo.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Esto imprimirá el contenido del archivo en la pantalla de salida.

Ahora, escribiremos un programa para crear y escribir datos en un archivo perl.

Escribir archivo en Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Esto escribirá la entrada proporcionada durante el tiempo de ejecución y creará un archivo test.txt que tendrá la entrada.

La forma anterior siempre intentará crear un archivo llamado test.txt y escribirá la entrada en el archivo; escribiremos lo mismo para anexar el archivo.

Operación de anexar archivo en Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Modos Descripción

<

Leer

+<

Lee y escribe

>

Crea, escribe y trunca

+>

Leer, escribir, crear y truncar

>>

Escribe, añade y crea.

+>>

Leer, escribir, agregar y crear

Ahora tenemos que ver cómo leer, escribir y agregar archivos usando ejemplos básicos.

Veremos algunos ejemplos más y otras funciones que ayudan a comprender más sobre los archivos.

Perl decir

Este método devolverá la posición actual de FILEHANDLER en bytes si se especifica; de lo contrario, considerará la última línea como la posición.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Búsqueda de Perl

La función de búsqueda es similar a la llamada al sistema fseek. Este método se utiliza para colocar el puntero del archivo en una ubicación específica especificando los bytes seguidos del inicio o del final del puntero del archivo.

seek FH, bytes, WHENCE;

DONDE es la posición del puntero del archivo para comenzar. Zero lo configurará desde el principio del archivo.

Ejemplo: Deje que input.txt tenga algunos datos como "Hola, este es mi mundo".

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

Salida:

este es mi mundo

Desvincular Perl

Desvincular se utiliza para eliminar el archivo.

unlink("filename or complete file path");

Directorios de manejo:

También podemos manejar directorios a través de los cuales podemos manejar múltiples archivos.

veamos cómo abrir un directorio. Podemos utilizar los métodos opendir y readdir.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Esto imprimirá todos los archivos disponibles en ese directorio.

Pruebas de archivos Perl y su significado

-r

Para comprobar si el archivo/directorio es legible para el usuario/grupo actual

-w

Para comprobar si el usuario/grupo actual puede escribir en el archivo/directorio

-x

Para comprobar si el archivo/directorio es ejecutable por el usuario/grupo actual

-o

Para comprobar si el archivo/directorio es propiedad del usuario actual

-R

Para comprobar si el archivo/directorio es legible para este usuario/grupo real

-W

Para comprobar si este usuario/grupo real puede escribir en el archivo/directorio

-X

Para comprobar si el archivo/directorio es ejecutable por este usuario/grupo real

-O

Para comprobar si el archivo/directorio es propiedad de este usuario real

-e

Para comprobar si el nombre del archivo/directorio existe

-z

Para comprobar si el archivo existe y tiene tamaño cero (siempre es falso para directorios)

-f

Para comprobar si Entry es un archivo simple

-d

Para comprobar si Entry es un directorio

-l

Para comprobar si la entrada es un enlace simbólico

-S

Para comprobar si Entry es un socket

-p

Para comprobar si la entrada es una tubería con nombre (una “FIFO”)

-b

Para comprobar si Entry es un archivo especial de bloque (como un disco montable)

-c

Para comprobar si Entry es un archivo de caracteres especiales (como un dispositivo de E/S)

-u

Para comprobar si el archivo o directorio tiene setuid

-g

Para comprobar si el archivo o directorio está setgid

-k

Para comprobar si el archivo o directorio tiene el bit adhesivo configurado

-t

El identificador de archivo proporcionado es un TTY (según la función del sistema isatty(), esta prueba no puede probar los nombres de archivos)

-T

Para comprobar si el archivo parece un archivo de "texto"

-B

Para comprobar si el archivo parece un archivo "binario"

-M

Para comprobar la antigüedad de modificación (medida en días) del expediente

-A

Para verificar la edad de acceso (medida en días) del archivo

-C

Para verificar la antigüedad de modificación de Inodo (medida en días) del archivo

Subrutina Perl

¿Qué es una subrutina?

Subrutinas son similares a funciones en otros lenguajes de programación. Ya hemos utilizado algunas funciones integradas como imprimir, cortar, cortar, etc. Podemos escribir nuestras propias subrutinas en Perl. Estas subrutinas se pueden escribir en cualquier parte del programa; es preferible colocar las subrutinas al principio o al final del código.

Subrutina en PERL

Ejemplo de subrutinas

sub subroutine_name 
{
	Statements…;    # this is how typical subroutines look like.
}

Ahora que sabemos cómo escribir una subrutina, ¿cómo accedemos a ella?

Necesitamos acceder o llamar a una subrutina usando el nombre de la subrutina con el prefijo '&'.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Pasar parámetros de Perl y argumentos de Perl

Se escriben subrutinas o funciones de Perl para colocar el código reutilizable en ellas. La mayor parte del código reutilizable requiere que se pasen parámetros a la subrutina. Aquí aprenderemos cómo podemos pasar argumentos a la subrutina.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

Salida:

3 es el valor pasado

@_ es una variable de matriz especial que almacena los argumentos pasados ​​a las subrutinas.

Perl Shift

También podemos usar la palabra clave 'shift' que desplaza un parámetro a la vez a una variable o $_[0],$_[1]… que es un elemento individual de la matriz @_

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

Salida:

hola se pasa

Las subrutinas se utilizan normalmente en la programación orientada a objetos y también en lugares donde es posible que tenga que colocar más código reutilizable.

La funcionalidad principal de las subrutinas es realizar alguna tarea y devolver el resultado del código reutilizable.

Tutorial PERL para principiantes - Guía completa

Podemos devolver un valor de la subrutina usando la palabra clave return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

Salida:

11

$resultado contendrá el valor de $a y $b agregados.

También podemos pasar hashes y matrices directamente a la subrutina.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

Salida:

1a2b

También podemos devolver un hash o una matriz.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

Salida:

Dentro de la subrutina2b1aDespués de la llamada a la subrutina2b1a

Formato Perl

Perl tiene un mecanismo que nos permite generar informes. Con esta función, podemos crear informes exactamente como queremos, ya sea en la pantalla de salida o en un archivo. Se puede escribir un formato simple utilizando las funciones printf o sprintf disponibles en Perl.

printf "%05d\n", 30;

Esto incluirá ceros iniciales delante del número 30, lo que hace un recuento total de dígitos de 5. Lo mismo se puede utilizar para sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Utilizando printf y sprintf podemos obtener la mayoría de los formatos de Perl. En el caso de los informes, será difícil su implementación.

Formato Perl

Ejemplo de informe:

================================================== =========================
Nombre Dirección Edad Teléfono
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

El ejemplo anterior es un informe que necesitamos imprimir de la misma manera en Perl. Esto se puede lograr usando perl printf y perl sprintf. Se puede implementar de manera efectiva usando format.

Un formato se puede declarar de la siguiente manera.

format FORMATNAME=FORMATLIST.

Aquí, usaremos un método particular de escritura para imprimir los datos en la pantalla de salida o en el archivo.

Símbolo Descripción

@

Se utiliza para representar el inicio del titular del campo.

>

Alineación correcta del texto

<

Alineación izquierda del texto

|

Alineación central

#

Numérico si se proporcionan varios #. Se asume como un comentario si se proporciona un único número.

.

Punto decimal

^

El inicio del titular del campo también se puede utilizar para líneas múltiples y también para ajuste de palabras.

~

La línea debe estar vacía si la variable está vacía

@*

Varias líneas.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Ejecute el código para ver el resultado.

Estamos usando el símbolo @ para especificar el inicio del titular del campo o cadena, '<' cada carácter.

Estamos utilizando STDOUT para imprimir en la salida estándar. Podemos cambiar esto al controlador de archivos que estamos usando para escribir datos en el archivo.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Podemos reemplazar '' o '|' para cambiar la alineación del texto. STDOUT_TOP se usa para diseñar el encabezado del formato. También podemos usar lo mismo con el controlador de archivos usando FH_TOP (FH es el controlador de archivos ).Esto generará el formato del archivo en el que estamos trabajando.

Estándares de codificación Perl

Cada programador tendrá su propio sentido de escribir el código utilizando ciertos estándares; Estos estándares deben ser lo suficientemente familiares como para que otros programadores puedan comprender y soportar el código adecuadamente.

Estándares de codificación en Perl

Estándares de codificación en Perl

Escribir código es simple y fácil. El problema surge cuando es necesario realizar un mantenimiento en etapas posteriores. Se deben seguir las pautas y los estándares de codificación adecuados al escribir el código. Perl también define ciertos estándares que serán útiles para que los programadores escriban código. Es recomendable cargar el módulo 'strict' y el 'warnings' mientras se escribe el código. Cada uno de estos módulos tiene su propia importancia. Strict nos hará declarar la variable antes de usarla y también nos dirá si hay alguna palabra simple presente en el código. El módulo Warnings también se puede utilizar al pasar la opción '-w' al intérprete de Perl en shebang. Las advertencias se imprimirán en la pantalla de salida.

#!/usr/bin/perl –w

A continuación se muestran algunas listas de estándares.

  • Utilice el módulo "estricto" y "advertencias".
  • Elimine la variable que no esté en uso.
  • Los nombres de las variables deben ser comprensibles para otros usuarios. Ej: $nombre, @fileData, etc.
  • Se requiere documentación al codificar un script.
  • No codifique ningún valor, más bien intente recuperarlos dinámicamente o solicite al usuario que ingrese durante el tiempo de ejecución (ruta de archivo, nombres de archivo).
  • Maximice la reutilización de código. Intente poner el código reutilizable en subrutinas.
  • Es decir, se deben dar nombres completos para las subrutinas.
  • Las subrutinas deben escribirse con comentarios y documentación adecuados.
  • Inicialice siempre las variables.
  • Siempre verifique los códigos de retorno de las llamadas al sistema. La apertura de un archivo puede ocurrir o no, tener un código de retorno aquí mostrará el estado de error si el archivo no existe.

    Ej: open(FH, <file.txt”) o die(“¡no se puede abrir el archivo $!”);

  • La subrutina siempre debe devolver un valor.
  • Abre rizado en la misma línea.
  • BLOQUE de una sola línea se puede colocar en una sola línea con rizado.
  • Utilice etiquetas durante los BUCLES, sería fácil salir del bucle cuando sea necesario.
  • Utilice guiones bajos mientras se escriben frases largas de palabras como un nombre de variable o subrutina.
  • Intente utilizar expresiones regulares simples mientras codifica.

Ejemplo perfecto con estándares de codificación:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Manejo de errores de Perl

¿Qué es una excepción?

Una excepción es un evento que ocurre durante la ejecución del programa y que suspenderá o finalizará su programa.

Gestión de errores

El manejo de errores es algo que todo programador debe tener en cuenta durante la programación. Perl también proporciona técnicas de manejo de errores con las que podemos atrapar el error y manejarlo en consecuencia.

Manejo de errores en Perl

Manejo de errores en Perl

Hay muchas formas de comprobar si hay errores en el programa. Necesitamos examinar los códigos de retorno de la función que estamos usando. Si somos capaces de manejar esos códigos de retorno correctamente, entonces se podrá lograr la mayor parte del manejo de errores.

¿Qué devolverá en caso de llamadas al sistema?

En el caso de llamadas al sistema, el estado de devolución se almacenará en dos variables especiales $? ¡Y $!

ps – Esto capturará el número de error o el número de error asociado con el mensaje de error.

ps – Esto mantendrá la función del sistema de estado de devolución ().

Usando el operador Perl o lógico

Podemos utilizar el operador lógico or para el manejo de errores al utilizar llamadas del sistema.

por ejemplo:

open(FH,"<test.txt");

Esto abrirá el archivo en modo lectura si el archivo existe.

¿Qué pasa si falta el archivo?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Evaluación Perl

La función de evaluación puede manejar errores fatales, errores de tiempo de compilación, errores de tiempo de ejecución y aquellos errores que terminan su código en algún momento.

La función Perl Eval puede tener un bloque de código o una expresión. Evals considera todo lo que se coloca en él como una cadena.

Considere una situación en la que se llama a una subrutina que no está definida en el script. En esta situación, el script termina indicando “subrutina no definida &XYZ, este error se puede manejar en la función de evaluación.

Hay muchos usos del bloque evals; uno de ellos es cuando queremos cargar el módulo específico del sistema operativo durante el tiempo de ejecución.

Ej: Dividir por cero provoca un error fatal; para manejar esto podemos colocar el código en el bloque de evaluaciones.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

Salida:

error de sintaxis en C:\Users\XYZ\Text.pl línea 8, cerca de “)

{"

La ejecución de C:\Users\XYZ\Text.pl se canceló debido a errores de compilación.

Ejemplo: evaluar usando la declaración perl die.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

Salida:

Atrapado: Morir en subprueba

Usando Perl Pruebe

Perl no admite bloques de código try, catch y finalmente como otros lenguajes de programación. Todavía podemos usarlos cargando un módulo Perl externo.

utilice Pruebe::Pequeño;

Con esto, podemos colocar su código en el bloque de prueba y detectar el error en el bloque de advertencia.

En lugar de $@ usado en eval, Try::Tiny usa $_.

# manejar errores con un controlador de captura

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Usando finalmente.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

Salida:

foo en C:\Users\XYZ\Text.pl línea 4.

Podemos usar try, catch y finalmente de esta manera.

prueba {# declaración}

capturar {# declaración}

finalmente {# declaración};

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Salida:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

Salida:

Programación de sockets Perl

¿Qué es un enchufe?

Tutorial PERL para principiantes - Guía completa

El socket es un medio a través del cual dos computadoras pueden interactuar en una red utilizando direcciones y puertos de red.

Supongamos que A (Servidor) y B (Cliente) son dos sistemas que deben interactuar entre sí mediante Sockets para ejecutar algunos programas.

Para implementar esto, necesitamos crear sockets tanto en A (Servidor) como en B (Cliente), A estará en el estado de recepción y B estará en el estado de envío.

Un servidor):

Aquí, el servidor desea recibir una conexión de B (Cliente) y ejecutar algunas tareas y enviar el resultado de vuelta a B (Cliente). Cuando ejecutamos el código, el sistema operativo en A intenta crear un socket y vincula un puerto a ese socket. Luego escuchará al remitente, que es B.

B (Cliente).

En este caso, el cliente desea enviar un programa desde su sistema a A (Servidor) para que lo procese. Cuando ejecutamos el código, el sistema operativo de B intenta crear un socket para comunicarse con A (Servidor), B debe especificar la dirección IP y el número de puerto de A al que B desea conectarse.

Si esto va bien, ambos sistemas interactuarán para intercambiar la información a través de un puerto. Perl también admite la programación de sockets.

Perl tiene una API nativa a través de la cual se pueden implementar sockets. Para hacerlo más fácil, hay muchos módulos CPAN con los que escribimos programas de socket.

Operaciones del servidor:

  • Crear zócalo
  • Vincular socket con dirección y puerto
  • Escuche el socket en esa dirección de puerto
  • Aceptar las conexiones del cliente que intenta conectarse utilizando el puerto y la IP del servidor.
  • Realizar operaciones

Cliente Operafunciones:

  • Crear zócalo
  • Conéctese al servidor usando su dirección de puerto
  • Realizar operaciones

Servidor cliente Operaciones en Perl

Zócalo.io

Este es un módulo para la programación de sockets, que se basa en la programación orientada a objetos. Este módulo no es compatible con el tipo de red INET utilizado en redes.

IO::Socket::INET:

Este módulo es compatible con el dominio INET y se basa en IO::Sockets. Todos los métodos disponibles en IO::Sockets se heredan en el módulo INET.

Cliente y Servidor usando protocolo TCP:

TCP es un protocolo orientado a conexión; Usaremos este protocolo para la programación de sockets.

Antes de continuar, veamos cómo podemos crear un objeto para el módulo IO::Socket::INET y crear un socket.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

El nuevo método en el módulo IO::Socket::INET acepta un hash como parámetro de entrada a la subrutina. Este hash está predefinido y solo necesitamos proporcionar los valores de las claves que queremos usar. Hay una lista de claves utilizadas por este hash.

Dirección de pares

Dirección de host remoto

PeerHost

Sinónimo para PeerAddr

Puerto de pares

Puerto o servicio remoto

Dirección local

Dirección de enlace del host local

Localhost

Sinónimo de LocalAddr

puerto local

Puerto de enlace del host local

proto

Nombre (o número) del protocolo

Tipo

Tipo de Socket

Escuchar

Tamaño de cola para escuchar

Reutilizardirección

Establecer SO_REUSEADDR antes de vincular

Reutilizar

Establecer SO_REUSEADDR antes de vincular

ReutilizarPuerto

Establecer SO_REUSEPORT antes de vincular

Radio

Establecer SO_BROADCAST antes de vincular

Tiempo de espera

Valor de tiempo de espera para varias operaciones

multihogar

Pruebe todas las direcciones para hosts multitarjeta

de amargo

Determinar si la conexión estará en modo de bloqueo

Servidor.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Cliente.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Nota:

En la programación de sockets, tendremos que ejecutar Server.pl primero y luego client.pl individualmente en diferentes símbolos del sistema si estamos ejecutando en un host local.

¿Qué son los módulos y paquetes de Perl?

Los módulos y paquetes están estrechamente relacionados entre sí y son independientes. Paquete: un paquete Perl también se conoce como espacio de nombres y tiene todas las variables únicas utilizadas como hashes, matrices, escalares y subrutinas. Módulo: El módulo es una colección de código reutilizable, donde escribimos subrutinas. Estos módulos se pueden cargar en programas Perl para hacer uso de las subrutinas escritas en esos módulos.

¿Qué son los módulos Perl?

Los módulos estándar se instalarán durante la instalación de Perl en cualquier sistema. CPAN: Perl completo Archive Network: un repositorio global de módulos Perl. Nuestros propios módulos Perl personalizados que podemos escribir nosotros. Básicamente, un módulo, cuando se carga en cualquier script, exportará todas sus variables y subrutinas globales. Estas subrutinas pueden llamarse directamente como si estuvieran declaradas en el propio script. Los módulos Perl se pueden escribir con la extensión .pm en el nombre de archivo, por ejemplo: Foo.pm. Se puede escribir un módulo usando el 'paquete Foo' al comienzo del programa.

Módulo Perl básico:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Ninguna salida

Para utilizar este módulo de Perl, debemos colocarlo en el directorio de trabajo actual.

Podemos cargar un módulo Perl usando require o use en cualquier parte del código. La principal diferencia entre requerir y usar es requerir el módulo cargado durante el tiempo de ejecución y usar cargas durante el tiempo de compilación.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Aquí, en el ejemplo anterior, accedemos a las subrutinas utilizando el nombre de módulo completo.

También podemos acceder al paquete usando 'usar Aritmética'.

Exportador:

Este módulo tiene una funcionalidad predeterminada de importación de métodos.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

La matriz @EXPORT se puede utilizar para pasar una lista de variables y subrutinas que, de forma predeterminada, se exportarán al llamador del módulo.

La matriz @EXPORT_OK se puede utilizar para pasar una lista de variables y subrutinas que se exportarán según la demanda, donde el usuario debe especificar mientras carga el módulo.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

De forma predeterminada, se exportará la adición de subrutina. El método de resta no se exportará si no se especifica al cargar el módulo.

Programación orientada a objetos en Perl

En esta sección, aprenderemos cómo crear módulos orientados a objetos Perl. Primero, veamos ¿cuál es el objeto? Un objeto es una instancia mediante la cual podemos acceder, modificar y localizar algunos datos en cualquier módulo de Perl. Esto no es más que hacer que su paquete Perl existente, sus variables y subrutinas actúen como clases, objetos y métodos en referencia a otros lenguajes de programación.

Crear clase

Ya sabemos cómo crear módulos del tema anterior. El propósito de la clase es almacenar métodos y variables. Un módulo Perl tendrá subrutinas que son métodos. Necesitamos acceder a esas variables y objetos de subrutinas.

Constructor Perl

Un constructor en Perl es un método que se ejecutará y nos devolverá una referencia con el nombre del módulo etiquetado a la referencia. Esto se llama bendición para la clase. Usamos una variable particular para bendecir una clase de Perl, que es bendecida.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

El nuevo método utilizado como constructor para una clase. Este constructor creará un objeto para nosotros y volverá al script que llama a este constructor.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Aquí, debemos comprender cómo se creó el objeto. Siempre que intentamos crear un objeto para la clase, debemos usar el nombre completo de la clase. Supongamos que la clase Perl está ubicada en algún lib\Math\Arithmetic.pm. Y, si queremos acceder a esta clase de Perl desde el directorio lib, entonces debemos proporcionar la ruta completa a la clase mientras llamamos al script.

utilizar lib::Math::Aritmética;

my $obj = lib::Math::Arithmetic->new();

Así es como ocurre la creación de objetos en Perl.

@C ª:

¿Cómo sabe el script Perl dónde existe el módulo de biblioteca? Perl sólo conoce el directorio actual del script y la ruta de la biblioteca incorporada de Perl. Siempre que utilicemos un módulo Perl que no esté ubicado en el directorio actual o en la ruta de la biblioteca Perl, el script siempre fallará. Acerca de @INC, esta es una matriz que contiene todas las rutas de directorio donde debe buscar los módulos de Perl. Intente ejecutar este comando y vea cuál será el resultado.

perl –e "print @INC"

Esto dará algunos resultados, y esa es la ruta donde estarán disponibles los módulos lib. Siempre que utilizamos un nuevo módulo de biblioteca, debemos decirle a Perl, intérprete, que busque esa ubicación particular donde el módulo Perl está disponible.

push(@INC, "PATH TO YOUR MODULE");

Haga de esto su primera línea de código. Esto le indicará a su intérprete que busque ese Camino. o use

lib Arithmetic; # List here is your Perl Module location

Destructor de Perl

El destructor de un objeto se llama de forma predeterminada al final y antes de que finalice el script. Esto se utiliza para destruir sus objetos de la memoria.


Secuencias de comandos de shell PERL V/s

Introducción a la programación PERL

  • La programación en Perl no causa problemas de portabilidad, lo cual es común cuando se usan diferentes shells en scripts de shell.
  • El manejo de errores es muy fácil en Perl
  • Es posible escribir programas largos y complejos en Perl con facilidad debido a su amplitud. Esto contrasta con Shell, que no admite espacios de nombres, módulos, objetos, herencia, etc.
  • Shell tiene menos bibliotecas reutilizables disponibles. Nada comparado con el CPAN de Perl
  • Shell es menos seguro. Llama a funciones externas (comandos como mv, cp, etc. dependen del shell que se utilice). Por el contrario, Perl realiza un trabajo útil al utilizar funciones internas.

Cómo se utiliza PERL en las pruebas de automatización

Perl se utiliza ampliamente en la automatización. Puede que no sea el mejor lenguaje de programación del mundo, pero es el más adecuado para cierto tipo de tareas. Analicemos dónde y por qué se utiliza Perl Pruebas de automatización.

Prueba de almacenamiento

Pruebas de almacenamiento usando Perl

¿Qué es el almacenamiento? Datos almacenados en Archivos.

Supongamos que tenemos un almacenamiento relacionado Caso de prueba donde tenemos que escribir datos en una partición, leerlos y verificar que los datos estén escritos correctamente.

Esto se puede hacer manualmente, pero ¿puede un probador manual realizar lo mismo 10000 veces? ¡Será una pesadilla! Necesitamos automatización

La mejor herramienta para automatizar cualquier cosa relacionada con el almacenamiento es Perl debido a sus técnicas de manejo de archivos, REGEXACIONES y un potente análisis de archivos que consume menos tiempo de ejecución en comparación con otros lenguajes de programación.

¿Por qué necesitamos probar el almacenamiento? Piense en grandes centros de datos donde los datos fluirán continuamente de un sistema a otro y se almacenarán miles de registros por segundo. Es esencial probar la solidez de ese mecanismo de almacenamiento.

Muchas empresas como HP, Dell, IBM y muchos fabricantes de servidores utilizan Perl como interfaz para probar la funcionalidad en dominios de almacenamiento y redes. NetApp es una de esas empresas que trabaja completamente en almacenamiento y utiliza Perl como lenguaje de programación para automatizar los casos de prueba.

Si está interesado en la automatización de Perl, sería recomendable aprender sobre almacenamiento y redes. Concepts.

Pruebas de servidores y redes:

Pruebas de servidores y redes usando Perl

Pruebas de servidores y redes usando Perl

PERL se utiliza ampliamente en el tiempo de actividad del servidor y en la supervisión del rendimiento.

Considere un centro de datos que tiene 100 hosts (servidores). Debe conectarse a cada host y ejecutar algunos comandos de forma remota. También desea reiniciar el sistema y comprobar cuándo vuelve a estar en línea.

Realizar esta tarea manualmente para los 100 hosts será una pesadilla. Pero podemos automatizar esto fácilmente usando PERL.

Pasos de diseño para lograr esta automatización anterior utilizando PERL

  1. Obtenga información del archivo sobre la información del host como (IP, nombre de usuario y contraseña).
  2. Utilice Net::SSH2 para conectarse a cada sistema y establecer un canal para ejecutar los comandos.
  3. Ejecute el conjunto de comandos necesarios, por ejemplo: ls, dir, ifconfig,ps, etc.
  4. Reiniciar el sistema.
  5. Espere 10 minutos para que se encienda el sistema.
  6. Haga ping al sistema usando el módulo Net::Ping e imprima el estado.

Codificaremos el escenario anterior.

Tomemos un archivo llamado Input.txt que almacenará la información completa sobre todos los hosts en los que necesitamos conectarnos y ejecutar el comando.

Entrada.txt

192.168.1.2 contraseña raíz

192.168.1.3 contraseña raíz

192.168.1.4 raíz raíz123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Prueba web

Perl no sólo se limita a las pruebas de almacenamiento y redes. También podemos realizar pruebas basadas en Web utilizando PERL. WWW-Mecanizar es un módulo utilizado para pruebas web. Básicamente, no iniciará ningún navegador para probar la funcionalidad de la aplicación web, sino que utilizará el código fuente de las páginas html.

También podemos realizar pruebas basadas en navegador usando Selenium IDE, RC, controlador web. Perl es compatible con Selenium.

\norte"; #esto contendrá la cadena restante después de que se complete la coincidencia del patrón.
imprimir "