suppression de fichiers avec perl
Je suis en train d'écrire un script perl qui lit les noms de fichiers dans un test.txt fichier dans un tableau, puis supprime les fichiers basé sur le nom des fichiers dans le tableau. Voici ce que j'ai eu jusqu'à présent...
#!/usr/bin/perl
use strict;
use warnings;
open(FILE, "test.txt") or die("Unable to open file.");
my @data = <FILE>;
close(FILE);
foreach my $line (@data){
unlink($line);
}
test.txt et remove_files.pl sont dans le même répertoire que les fichiers à supprimer. Je ne peux pas comprendre pourquoi le script ne supprime pas les fichiers. Ai-je raté un module?
La première astuce serait de vérifier l'erreur:
unlink($line) or warn "$0: could not unlink $line: $!\n"
OriginalL'auteur Chad | 2012-02-13
Vous devez vous connecter pour publier un commentaire.
Lignes lues dans un fichier avec l'readline opérateur (
<...>
) va inclure le caractère de saut de ligne. Vous aurez besoin de l'enlever, sinon tu va être d'essayer de supprimer un fichier appelé"myfile.txt\n"
au lieu de"myfile.txt"
. L'utilisation de Perlchomp
fonction de la garniture de votre entrée:chomp @data; unlink @data;
, comme les deux commandes de prendre listes comme arguments. I. e. pas besoin d'une boucle.Ensuite, il est plus difficile de vérifier les erreurs.
Il sera aussi facile qu'avant pour vérifier les erreurs, mais dans le cas d'une erreur, vous ne serez pas en mesure de dire qui fichier n'a pas pu être supprimé.
OriginalL'auteur mob