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.pl
o 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::Std
yGetOpt::Long
procesarlos fácilmente.GetOpt::Std
solo admite conmutadores de un solo carácter yGetOpt::Long
es mucho más flexible. DeGetOpt::Long
:Alternativamente,
@ARGV
es 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 + 1
usted también podría haber dicho@ARGV
ARGV[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
@ARGV
sin 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
@ARGV
a 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
shift
comando:(Tenga en cuenta que hacer esto con
shift
solo funcionará si está fuera de todosub
s. Dentro de asub
, recuperará la lista de argumentos pasados al programa ensub
lugar 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