Estoy trabajando en un script de Perl. ¿Cómo puedo pasarle los parámetros de la línea de comando?
Ejemplo:
script.pl "string1" "string2"
perl
command-line
lamcro
fuente
fuente

./script.plo pasará mucho tiempo en el tiempo de ejecución.Respuestas:
Depende de lo que quieras hacer. Si desea usar los dos argumentos como archivos de entrada, puede pasarlos y luego usarlos
<>para leer su contenido.Si tienen un significado diferente, puede usarlos
GetOpt::StdyGetOpt::Longprocesarlos fácilmente.GetOpt::Stdsolo admite conmutadores de un solo carácter yGetOpt::Longes mucho más flexible. DeGetOpt::Long:Alternativamente,
@ARGVes una variable especial que contiene todos los argumentos de la línea de comandos.$ARGV[0]es el primero (es decir,"string1"en su caso) y$ARGV[1]es el segundo argumento. No necesita un módulo especial para acceder@ARGV.fuente
Contains the name of the current file when reading from <> .Los pasa como está pensando, y en su secuencia de comandos, los obtiene de la matriz
@ARGV. Al igual que:A partir de aquí .
fuente
$#ARGV + 1usted también podría haber dicho@ARGVARGV[0]o$argv[1]si está buscando un argumento particular.imprimirá cada argumento.
fuente
Alternativamente, una manera más sexy y placentera .....
my ($src, $dest) = @ARGV;"Asume" se pasan dos valores. Un código adicional puede verificar que la suposición sea segura.
fuente
@ARGVsin ninguna acción suya, al igual que C / C ++ los proporciona a través de argv / argcOtra opción más es usar perl -s, por ejemplo:
Entonces llámalo así:
O vea el artículo original para más detalles:
fuente
Puede acceder a ellos directamente, asignando la variable especial
@ARGVa una lista de variables. Así por ejemplo:perl tmp.pl 1 2 3 4 5
fuente
Si los argumentos son nombres de archivo para leer, use el operador de diamante (<>) para obtener su contenido:
Si los argumentos son opciones / modificadores, use GetOpt :: Std o GetOpt :: Long, como ya se muestra en slavy13.myopenid.com.
En el caso de que sean algo más, puede acceder a ellos ya sea caminando explícitamente a través de @ARGV o con el
shiftcomando:(Tenga en cuenta que hacer esto con
shiftsolo funcionará si está fuera de todosubs. Dentro de asub, recuperará la lista de argumentos pasados al programa ensublugar de los pasados al programa).fuente
fuente
Si solo desea algunos valores, puede usar la matriz @ARGV. Pero si está buscando algo más poderoso para procesar algunas opciones de línea de comandos, debe usar Getopt :: Long .
fuente