[caracas-pm] caracas-pm Digest, Vol 36, Issue 5

Andres Gazso agazso at ius.cc
Thu May 24 20:49:02 PDT 2007


Dios mío... ¡qué asco!

Menos mal que a la final no se hizo la cosa en PHP y MySQL... o peor, En
VisualBasic, para "salir del paso" claro....

Siguiendo las sabias palabras de Master Jedi Yoda-Squonk, quien dijo:

"Si Perl aprender quieres, hacer que todo en Perl tienes!"

Vader of Sith.




On Thu, 2007-05-24 at 21:25 -0400, Alexis Arnal wrote:
> Saludos, gracias por las observaciones.
> 
> Aunque parece una tontería estuve parte de la mañana y la tarde
> peleando con ese pequeño detalle, que como explicaron José, Ernesto,
> Luis, .... y como al final de la tarde pude darme cuenta el comando cd
> no funciona con system, ya había revisado la función chdir pero me
> parecía un poco ilógico que no funcionara cd, ya que había probado
> otros comandos como por ejemplo el tar, ls, pwd, y funcionaron bien
> 
> Haciendo el debugging me dí cuenta de la observación de Luis donde
> afirma que el directorio desde el cual se hace un cd o un chdir no se
> modifica, al final cuando termina el script queda en la misma ruta
> desde donde se ejecutó el script
> 
> En fin, para salir del paso lo hice en bash, en lo que tenga chance lo
> hago en completo en Perl
> 
> 
> > Saludos, estoy haciendo un programita para ejecutar unas tareas en Perl
> >
> > a continuacion muestro el extracto del script que me da problemas
> >
> > system("tar xvzf foo.tgz");
> > system('cd foo/CA');
> >
> > y este es el error:
> > Can't exec "cd": No existe el fichero o el directorio at certifoo.pl
> > line 27, <S TDIN> line 1.
> >
> > Aparentemente no se puede ejecutar un cambio de directorio con la
> > funci?n system, prob? con las rutas relativas, absolutas, comillas
> > dobles, simples, con la tilde para sustituir a system y nada
> >
> > Alexis Arnal escribi?:
> > > system('cd foo/CA');
> >
> > chdir "cd foo/CA";
> >
> > cd es un shell built-in. No funcionar? si no est?s dentro de un
> > int?rprete de sh.
> >
> > Jose
> >
> > As? es, porque 'cd' no es un comando sino una propiedad de cada proceso.
> > En el shell, 'cd' es un "builtin" que cambia de directorio. Debes usar
> > la funci?n chdir() de Perl. Y en todo caso, probablemente es m?s
> > eficiente que hagas todo con Perl.
> > --
> > Ernesto Hern?ndez-Novich - Linux 2.6.18 i686 - Unix: Live free or die!
> > Geek by nature, Linux by choice, Debian of course.
> > If you can't aptitude it, it isn't useful or doesn't exist.
> > GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
> >
> >
> > Aparte de lo que ya te comentan previamente siempre es mejor ejecutar
> > system() con los argumentos como lista, para as? asegurar que el primer
> > elemento de la lista es tratado como comando y los dem?s, manejados
> > propiamente como argumentos.
> >
> > @arr = qw(tar xzvf foo.tar.gz);
> > system(@args);
> >
> > perldoc -f system
> >
> > --
> > David Moreno Garza <damog at ciencias.unam.mx> | http://www.damog.net/
> >
> > David Moreno Garza wrote:
> > > @arr = qw(tar xzvf foo.tar.gz);
> > > system(@args);
> >
> > Quise decir:
> >
> >  system(@arr);
> >
> > ...desde luego :-)
> >
> > --
> > David Moreno Garza <damog at ciencias.unam.mx> | http://www.damog.net/
> >  Con la fuerza que me da mill?n y medio de Gansitos.
> >
> >
> >
> > 1.- Estas seguro que existe el directorio foo/CA. Deberias revisar si el
> > tar fue satisfactorio, ya que _  si  _ el directorio es creado por la
> > ejecucion del tar y este falla, entonces el directorio no es creado.
> >
> > 2.- Que vas a hacer luego del cd. Dependiendo de lo que quieras hacer es
> > posible que no necesites ese cambio de directorio.
> >
> >
> > Adem?s, cuando hagas "system(qq{cd /foo})" el cambio de directorio no
> > es persistente (ie, el proceso que ejecut? la llamada *nunca* cambi?
> > de directorio). Puntos adicionales para quien explique por qu? :-)
> > M?s puntos adicionales para el que explique este one-liner y su salida:
> >
> > $ perl -e 'system("cd ..; pwd"); system("pwd")'
> > /Users
> > /Users/lem
> >
> >
> > Saludos.
> >
> > -lem
> >
> >
> >
> >
> > ------------------------------
> >
> > Message: 8
> > Date: Thu, 24 May 2007 16:46:32 -0400
> > From: "Nelo R. Tovar" <tovar.nelo at gmail.com>
> > Subject: Re: [caracas-pm] Problemas con ejecuci?n de bash dentro de
> >         scripts perl
> > To: Perl Mongers Caracas - Venezuela <caracas-pm at pm.org>
> > Message-ID: <4655F9A8.70808 at gmail.com>
> > Content-Type: text/plain; charset=ISO-8859-1
> >
> > Saludos.
> >
> > 1.- Estas seguro que existe el directorio foo/CA. Deberias revisar si el
> > tar fue satisfactorio, ya que _  si  _ el directorio es creado por la
> > ejecucion del tar y este falla, entonces el directorio no es creado.
> >
> > 2.- Que vas a hacer luego del cd. Dependiendo de lo que quieras hacer es
> > posible que no necesites ese cambio de directorio.
> >
> > Alexis Arnal wrote:
> > > Saludos, estoy haciendo un programita para ejecutar unas tareas en Perl
> > >
> > > a continuacion muestro el extracto del script que me da problemas
> > >
> > > system("tar xvzf foo.tgz");
> > > system('cd foo/CA');
> > >
> > > y este es el error:
> > > Can't exec "cd": No existe el fichero o el directorio at certifoo.pl
> > > line 27, <S TDIN> line 1.
> > >
> > > Aparentemente no se puede ejecutar un cambio de directorio con la
> > > funci?n system, prob? con las rutas relativas, absolutas, comillas
> > > dobles, simples, con la tilde para sustituir a system y nada
> > >
> >
> >
> >
> > ------------------------------
> >
> > Message: 9
> > Date: Thu, 24 May 2007 19:14:37 -0400
> > From: Jose Luis Rivas Contreras <ghostbar38 at gmail.com>
> > Subject: Re: [caracas-pm] Problemas con ejecuci?n de bash dentro de
> >         scripts perl
> > To: Perl Mongers Caracas - Venezuela <caracas-pm at pm.org>
> > Message-ID: <46561C5D.5040802 at gmail.com>
> > Content-Type: text/plain; charset=UTF-8
> >
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Luis Mu?oz escribi?:
> > [...]
> > > M?s puntos adicionales para el que explique este one-liner y su salida:
> > >
> > > $ perl -e 'system("cd ..; pwd"); system("pwd")'
> > > /Users
> > > /Users/lem
> >
> > Es obvio al ejecutarlo desde `/Users/lem' ... ;-)
> >
> > Jose Luis.
> > - --
> >
> > Jose Luis Rivas Contreras wrote:
> > > > $ perl -e 'system("cd ..; pwd"); system("pwd")'
> > > > /Users
> > > > /Users/lem
> > >
> > > Es obvio al ejecutarlo desde `/Users/lem' ... ;-)
> >
> > Creo que lo que quer?a es que se explicara precisamente esa obviedad :-)
> >
> > --
> > David Moreno Garza <damog at ciencias.unam.mx> | http://www.damog.net/
> >  <URL:http://www.georgedillon.com/web/html_email_is_evil.shtml>



More information about the caracas-pm mailing list