Tengo una duda bastante básica así que supongo que me podréis ayudar:
Tengo un fichero de configuración (FTP.cfg) en el que guardo datos que luego serán usados por un script perl para realizar una conexión FTP para el envío de una serie de ficheros:
Ejemplo de un "cat FTP.cfg":
- Código: Seleccionar todo
user = pepito
password = frijolito
host = Gavilan
path = /pepito/juanito/
El hecho es que tengo un script perl que parsea dicho fichero de conflagración y que guarda en respectivas variables el contenido de dichos campos:
En $user guardaría "pepito" ,en $password "frijolito" y así sucesivamente, para luego efectuar el FTP.
Lo que yo deseo, y ahí es donde entráis vosotros como expertos, es añadir una condición en mi script. Quiero que el FTP sea efectuado únicamente si todas las variables anteriores son diferentes de vacío o "".
Es decir, que si en el fichero de configuración anterior, algunas de las variables no está informada, pues la conexión FTP no se efectúe.
Lo que yo he pensado es lo siguiente:
Using perl Syntax Highlighting
if (($user ne "") && ($password ne "") && ($host ne "") && ($path ne ""))
{ ejecutar FTP}
{ ejecutar FTP}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El problema es que si tengo un fichero de configuración del estilo:
- Código: Seleccionar todo
user =
password =
host =
...
no sé si realmente lo que habré guardado en $user, $password y $host será en realidad la cadena vacía ("") o si en realidad pueda haber también espacios en blanco o saltos de línea, y por lo tanto, como tratarlos.
Aquí les pongo el código de parseo contenido en mi script perl para el parseo de dicho fichero de configuración
Using perl Syntax Highlighting
open(CFGFILE,$configFile);
while (my $l = <CFGFILE>) {
if ($l =~ /^user = (\S+)/) {
$user = $1;
}
if ($l =~ /^password = (\S+)/) {
$password = $1;
}
if ($l =~ /^host = (\S+)/) {
$host = $1;
}
if ($l =~ /^path = (\S+)/) {
$path = $1;
}
}
close(CFGFILE);
while (my $l = <CFGFILE>) {
if ($l =~ /^user = (\S+)/) {
$user = $1;
}
if ($l =~ /^password = (\S+)/) {
$password = $1;
}
if ($l =~ /^host = (\S+)/) {
$host = $1;
}
if ($l =~ /^path = (\S+)/) {
$path = $1;
}
}
close(CFGFILE);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
¿Alguien me puede echar una manita?
¿Es buena la condición que expongo más arriba o es mejor cambiarla por otra conteniendo expresiones regulares?
Disculpas por alargarme tanto pero a veces no es fácil exponer una duda en Perl sin exponer algunos detalles.
Muchas gracias por todo y espero impaciente vuestros comentarios,
Cordialmente,
Felipe