Los argumentos de la línea de comando se envían a un programa Perl de la misma manera que en cualquier otro lenguaje. La matriz @ARGV contiene el argumento de la línea de comando. No es necesario utilizar variables incluso si utiliza 'uso estricto'. De forma predeterminada, esta variable siempre existe y los valores de la línea de comando se colocan automáticamente dentro de esta variable. Para acceder a los argumentos de la línea de comandos de su script, solo necesita leer desde la matriz @ARGV.
Perl permite usar la matriz @ARGV como nombres de archivos usando . $ARGV contiene el nombre del archivo actual cuando se lee desde .
Elementos de matriz @ARGV
La matriz @ARGV funciona igual que una matriz normal. Su primer argumento será $ARGV[0], el segundo $ARGV[1], y así sucesivamente.
Ejemplo de argumento de línea de comando de Perl
Veamos un ejemplo sencillo para imprimir argumentos de línea de comando. En este ejemplo, imprimiremos un mensaje de bienvenida con el nombre del usuario como argumento desde la línea de comando. Necesitamos dos argumentos de línea de comando como nombre y apellido del usuario.
Paso 1 Crear un guión welcome.pl en su sistema.
#!/usr/bin/perl -w # (1) check for the number of command-line arguments entered $number_args = $#ARGV + 1; if ($number_args != 2) { print 'Wrong entry. Please enter your full name. '; exit; } # (2) if two command line arguments received, $firstName=$ARGV[0]; $lastName=$ARGV[1]; print 'Welcome $firstName $lastName at JavaTpoint. ';
En el script anterior, primero comprobará si se proporcionan o no dos argumentos de línea de comando. De lo contrario, dará un error de entrada incorrecta. Y en caso afirmativo, procesará esos argumentos como $ARGV[0] y $ARGV[1] respectivamente.
Paso 2 Ejecute el script en su consola como Perl bienvenido.pl Christian Grey
Nota: antes de dar este comando, asegúrese de estar en el directorio que contiene su script bienvenido.pl
Este es el resultado que obtendrá en su consola.
Paso 2 Ejecute el script en su consola como perl bienvenido.pl cristiano
Aquí, pasamos solo un argumento desde la línea de comando.
En el resultado, puede ver el mensaje de entrada incorrecto para pasar un argumento.
Ejemplo de argumentos de línea de comando de Perl usando Loop
Ahora ejecutaremos un bucle para imprimir los argumentos de la línea de comando. En este ejemplo, puede ingresar tantos argumentos como desee.
Paso 1 Crear un guión loop.pl en su sistema.
#!/usr/bin/perl $get_args = $#ARGV + 1; print 'Total command line arguments received: $get_args '; foreach $argument (0 .. $#ARGV) { print '$ARGV[$argument] '; }
Paso 2 Ejecute el script en su consola como bucle perl.pl a b c d e f g h
Mire el resultado anterior, también muestra el total de argumentos pasados en la línea de comando. Aquí hemos pasado 8 argumentos.
Perl Getopt::Largo
Las opciones simples de la línea de comando se realizan usando la opción ?s. Las opciones complejas de línea de comando se realizan usando Getopt::Std y Getopt::Long.
Getopt significa Obtener opciones . Procesa el contenido de @ARGV en función de la configuración que le demos. Devuelve un valor verdadero o falso según el procesamiento.
Ejemplo:
En este ejemplo, obtendremos la edad del usuario desde la línea de comando.
use strict; use warnings; use 5.010; use Getopt::Long qw(GetOptions); my $x; GetOptions('from=s' => $x) or die 'Usage: $0 --from NAME '; say'According to your age which is $x:'; if ($x >=18) { say 'You are eligible to vote'; }
Hemos declarado una variable $x que almacenará el valor insertado en --de desde la consola estándar. El de=s declara el parámetro de línea de comando llamado --de con una cuerda detrás. Se asigna además a la variable $x. La barra invertida () significa que estamos pasando una referencia a la variable.
Este script cambiará a el parte solo cuando ejecutaremos este script pasando algo que parece un nombre de parámetro y comienza con un (-) pero no está declarado en este script.
Ahora ejecutaremos este programa.
Producción:
Mire el resultado, después de ingresar la edad en la consola, obtuvimos el resultado anterior.