Tutorial de Perl

ยฟ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

Ventajas: Desventajas:

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. Strings

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 Base 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

Strings

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 . Puede
\f formulario
\b Retroceso
\a campana
\e para disfrutar
\ 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 "

Resumir este post con: