• Publicidad

Parámetro string con espacios en blanco

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

Parámetro string con espacios en blanco

Notapor TSV_mismo » 2013-08-06 15:24 @683

¡Buenas!

Primeramente me presento. Soy Toni y estoy haciendo mis primeros pinitos con Perl aunque llevo bastante tiempo automatizando con VBS y Bash. Por un tema concreto de gestión de un Excel, me he puesto con Perl y he llegado a un punto sin retorno.

Seguro que es una tontería muy grande, pero he recorrido Internet en inglés y español y las búsquedas por

blank space passed argument perl

y todas sus variantes no me dicen nada.

Os cuento mi problema...

Desde un script en Bash le paso a mi script en Perl un par de argumentos que son una ruta de un Linux entre otros que sí funcionan.

Creo que falla porque hay espacios en blanco en la ruta.
Sintáxis: [ Descargar ] [ Ocultar ]
  1. /usr/local/bin/sctript.pl $1 $2 $3 $4 $5 

En el script Perl tengo puesto lo siguiente (resumidamente):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ruta1  = $ARGV[4];
  2. my $ruta2 = $ARGV[5];
  3.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El error que da es el siguiente, al intentar inicializar el libro Excel.

Sintáxis: [ Descargar ] [ Ocultar ]
  1. Can't call method "worksheet" on an undefined value at /usr/local/bin/script.pl line 35. 


Para intentar ver qué le llega a $ARGV[4] y $ARGV[5] hago un print, y veo que se me corta en el espacio en blanco.

He probado enviándole '\' con comillas simples, dobles, y ya no sé qué más hacer...

¡¡Gracias por la atención!!
TSV_mismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2013-08-06 15:06 @671

Publicidad

Re: Parámetro string con espacios en blanco

Notapor explorer » 2013-08-06 16:40 @736

Bienvenido a los foros de Perl en Español, TSV_mismo.

Vemos que estás en Bash, en un Unix/Linux.

El siguiente ejemplo me funciona en un entorno igual al tuyo:
Sintáxis: (kk.sh) [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. #!/bin/bash
  2. set "una ruta con espacios" otracosa
  3. perl -Mv5.10 kk.pl "$1" $2
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Fíjate que hay un doble sistema de comillas: las primeras, para la definición del argumento 1, y las segundas, para ser pasadas en la línea de comandos al ejecutar el programa Perl. Las primeras comillas podrían haber sido también simples, pues su contenido es fijo. Pero las segundas deben ser siempre dobles, ya que queremos que la línea interprete el contenido ($1).
Sintáxis: (kk.pl) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. $" = '][';       # separador entre elementos de un array que se está interpolando con comillas dobles. Ver perlvar
  3. say "[@ARGV]";   # [una ruta con espacios][otracosa]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: Parámetro string con espacios en blanco

Notapor TSV_mismo » 2013-08-07 08:37 @400

¡Buenas!

¡Muchas gracias por la respuesta!

Me ha funcionado con las comillas dobles al pasarle el argumento.

Es muy curioso porque fue la segunda opción que probé cuando falló, pero seguro que hice mal alguna otra cosa que con las pruebas y cambios arreglé quitando lo de las comillas.

Bueno, ya tú sabes lo que pasa cuando empiezas a cambiar cosas :roll: :roll: :mrgreen: :mrgreen:
TSV_mismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2013-08-06 15:06 @671


Volver a Básico

¿Quién está conectado?

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