Comment gérer les noms de fichiers avec des espaces?

- Je utiliser Perl sur windows(Active Perl). J'ai un programme en perl pour glob les fichiers dans le dossier courant, et de les enchaîner tous dos à l'aide de la commande copier appelée à partir de l'intérieur à l'aide de system()...

Quand je l'execute, ce qui donne un dos d'erreur disant: "Le système ne peut pas trouver le fichier spécifié." C'est lié à la les espaces dans les noms de fichiers que j'ai.

C'est 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 fichier 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 les éléments du tableau à l'aide de "$_" comme indiqué ci-dessus, il donne une erreur comme ci-dessus.

J'ai essayé quelques façons dont je pourrais 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 à l'aide du code ci-dessus. Comment faire pour "échapper" à l'espace dans les noms de fichier.

2] Aucune solution de remplacement en Perl pour réaliser la même chose. (La plus Simple de bienvenue..)

Pourquoi ne pas vous venez de lire les fichiers et les imprimer tous à un seul fichier de sortie?
Sens open(), read() et write (), l'un après l'autre..
Aucune idée de pourquoi cette question n'a jamais reçu un upvote. +1 de moi. A couru dans le même problème (encore une fois) ... :-/ ... juste maintenant.

OriginalL'auteur goldenmean | 2010-11-26