Es un error muy común, de la gente que empieza, escribir cosas como
@ARGV[0]cuando, realmente, se debe escribir así:
$ARGV[0]El símbolo que hay delante de la variable (el sigilo), indica qué queremos obtener de la variable.
Si es un '$' estamos indicando que solo queremos un escalar.
Si ponemos un '@' indicamos que queremos una lista de escalares.
Y esto es independiente de que @ARGV sea un
array o no (incluso podría ser un
hash. Más información en
perldoc perldata).
Así que entonces, tu programa queda mejor así:
print $ARGV[0] . " - " . $ARGV[1] . " - " . $ARGV[2];Aunque quedaría más corto así:
print join ' - ', @ARGV;y así ya no dependes del número de argumentos (incluso si es uno solo).
Aún más... quedaría perfecto si no tuvieras la necesidad de usar PHP