J'utilise Perl sur windows (Active Perl). J'ai un programme Perl pour regrouper les fichiers dans le dossier actuel, et les concaténer tous en utilisant la commande DOS Copy appelée de l'intérieur using system() ...Comment gérer les noms de fichiers avec des espaces?
Lorsque j'exécute, cela donne une erreur de dos disant "Le système ne peut pas trouver le fichier spécifié. " C'est lié aux espaces dans les noms de fichiers que j'ai.
Voici le code 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");
}
}
glob retourne un tableau de noms de fichiers dans mon dossier en cours, ces noms de fichiers ont des espaces entre eux, de sorte que les éléments du tableau ont des espaces entre les deux. Lorsque j'utilise le système (...) pour exécuter ma commande de copie sur ces éléments de tableau en utilisant "$ _" comme indiqué ci-dessus, cela donne une erreur comme ci-dessus.
J'ai essayé plusieurs façons d'appeler le système (...) mais sans succès.
Je voudrais savoir,
1] Comment puis-je obtenir ce travail sur les fichiers qui ont des espaces entre eux en utilisant le code ci-dessus. Comment "échapper" l'espace blanc dans les noms de fichiers.
2] Toute solution alternative en Perl pour atteindre la même chose. (Les simples sont les bienvenus ..)
Pourquoi ne vous contentez pas de lire les fichiers et les imprimer dans un fichier de sortie? – robert
@robert: Signification open(), read() et write() l'une après l'autre. – goldenmean
Aucune raison pour laquelle cette question n'a jamais reçu de révision. +1 de moi. Ran dans le même problème (encore) ...: -/... juste maintenant. – 0xC0000022L