• Publicidad

Problemas $ARGV[]

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problemas $ARGV[]

Notapor bartg01 » 2007-12-18 07:32 @356

Tengo un problema con la entrada de datos desde la línea de comandos.

Mientras que en el ordenador de casa funciona perfectamente el programa, al cargarlo en otro ordenador, el programa sale y no da ningún resultado.

He intentado cargar un programilla más sencillo, pero nada.

¿A alguien se le ocurre que narices puede haberme hecho perder toda la mañana?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($ARGV[0]) {
   $entrada = $ARGV[0];
   print $entrada;
   }
if (!$ARGV[0]) {
   print "Sigue sin funcionar, ¡qué cabrón!";
   }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La salida del programa es la siguiente:

Código: Seleccionar todo
Sigue sin funcionar, ¡qué cabrón!
H:\Documents and Settings\Perl programas>cabron.pl Funciona

H:\Documents and Settings\Perl programas>
bartg01
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2007-11-29 16:15 @718

Publicidad

Notapor explorer » 2007-12-18 10:29 @478

A mí me funciona perfecto el trozo de código que has puesto.

Lo único que se me ocurre es que quizás falta el retorno de carro en los finales de línea, de las dos frases que estás imprimiendo... pero no veo nada raro...

Tampoco nos has dicho qué quieres que haga.

P.D. Lo he probado en un Linux.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor bartg01 » 2007-12-18 11:37 @525

Si el problema no es que haga o deje de hacer, el caso es que en otros sistemas (Windows, ordenador de casa), funciona la entrada desde la línea de comandos; mientras que en el ordenador donde suelo estar por las mañanas (Windows también) no funciona la entrada desde la línea de comandos.

Y preguntaba si conoces algún caso en el que ocurra algo así, sino tendré que seguir rastreando la red red haber si encuentro algo.

Ya sé que no es un tema estrictamente de código Perl, más bien de software, pero pensé que quizás podríais darme alguna pista.

Gracias por tú atención de todos modos.
bartg01
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2007-11-29 16:15 @718

Notapor Norther » 2007-12-18 16:21 @723

Yo también estoy en Linux y me funciona perfectamente tanto en el ordenador de mesa como en el portátil. Sonará típico, pero prueba a reinstalar Active Perl ya que no hay más ideas...
Norther
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2007-07-24 13:47 @616
Ubicación: Asturias

Notapor bartg01 » 2007-12-18 20:07 @879

Ya lo reinstalé fue lo primero que hice. De todas formas mañana le echaré otro vistazo.
bartg01
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2007-11-29 16:15 @718

Notapor Jenda » 2007-12-23 07:47 @366

bartg01 escribiste:Si el problema no es que haga o deje de hacer, el caso es que en otros sistemas (Windows, ordenador de casa), funciona la entrada desde la línea de comandos; mientras que en el ordenador donde suelo estar por las mañanas (Windows también) no funciona la entrada desde la línea de comandos.


Parece ser una problema del ajuste de la extensión .pl en alguno de los sistemas. Prueba algo así:
Código: Seleccionar todo
H:\Documents and Settings\Perl programas> perl.exe cabron.pl Funciona

¿Funciona?

Si funciona tienes que arreglar el ajuste.

Código: Seleccionar todo
c:\>ASSOC .pl

Te debería decir que el nombre del tipo de ficheros con extensión .pl. Si no lo hace usa

Código: Seleccionar todo
ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe "%1" %*


Si el ASSOC te devuelve el nombre usa solo el FTYPE. Algo así:

Código: Seleccionar todo
c:\> ASSOC .pl
.pl=plfile
c:\> FTYPE plfile=perl.exe "%1" %*
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor bartg01 » 2007-12-26 08:36 @400

Lo siento por responder tan tarde, pero no tenía conexión a la red. Efectivamente poniendo perl.exe funcionaba. En cuanto vuelva al despacho pruebo el comando para que reconozca los archivos .pl y os comento.

Muchas gracias, saludos.
bartg01
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2007-11-29 16:15 @718

Notapor creating021 » 2008-03-05 19:52 @869

Para no crear un nuevo hilo... sigo con éste.

Yo tengo este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print shift;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Se ejecuto el código, y como argumento le pongo un retorno de carro ( "\n" ) me imprime el texto ( como si fuera print '\n' ).

¿Cómo lo puedo arreglar?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2008-03-05 20:43 @905

Es que no es un retorno de carro lo que estás pasando a Perl, si no dos caracteres... un '\' y una 'n'.

Debes pasar correctamente el carácter avance de línea (o retorno de carro) al programa, y eso depende del entorno de línea de comandos en que te encuentres.

Por ejemplo, en mi Linux, con un bash v3.2.25, tengo que hacer lo siguiente para pasar literales como argumentos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -e 'print shift' $'\n'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


(Ver sección QUOTING del man bash).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2008-03-05 20:56 @914

¿Pero por qué printf (el comando) sí puede tomar "\n" como argumento y perl no?

¿Por qué en el siguiente código sí funciona?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $format = shift;
eval qq(printf "$format", \@ARGV);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Como llamas a perl (para imprimir el retorno) funciona muy bien.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados

cron