Uso Perl en Windows (Active Perl). Tengo un programa perl para englobar los archivos en la carpeta actual y concatenarlos todos usando el comando dos copy llamado desde adentro usando system() ...¿Cómo se manejan los nombres de archivos con espacios?
Cuando ejecuto, esto da un error dos diciendo "El sistema no puede encontrar el archivo especificado. " Está relacionado con los espacios en los nombres de archivo que tengo.
Este es el código Perl: -
@files = glob "*.mp3";
$outfile = 'final.mp3';
$firsttime = 1;
foreach (@files)
{
if($firsttime == 1)
{
@args = ('copy' ,"/b ","$_","+","$outfile", "$outfile");
system (@args);
#system("copy /b '$_'+$outfile $outfile");
$firsttime = 0;
}
else
{
@args = ('copy' ,"/b ","$outfile","+","$_", "$outfile");
system (@args);
#system("copy /b $outfile+'$_' $outfile");
}
}
pegote devuelve una matriz de nombres de archivos en mi carpeta actual, esos nombres de archivo tienen espacios entre ellos, por lo que los elementos de la matriz tienen espacios en el medio. Cuando uso el sistema (...) para ejecutar mi comando de copia en esos elementos de la matriz usando "$ _" como se muestra arriba, da error como el anterior.
Intenté dos maneras en que podía llamar al sistema (...) pero sin éxito.
Me gustaría saber,
1] ¿Cómo puedo conseguir este trabajo en archivos que tienen espacios entre ellos utilizando el código de seguridad. Cómo 'escapar' el espacio en blanco en los nombres de archivo.
2] Cualquier solución alternativa en Perl para lograr lo mismo. (Los más simples son bienvenidos ..)
¿Por qué no acaba de leer los archivos e imprimir todos ellos a un archivo de salida? – robert
@robert: Significado abrir(), leer() y escribir() uno tras otro .. – goldenmean
No tengo idea de por qué esa pregunta nunca recibió un voto popular. +1 de mi parte Se encontró con el mismo problema (nuevamente) ...: -/... justo ahora. – 0xC0000022L