löschen von Dateien mit perl
Ich versuche zu schreiben, ein perl-script, das liest die Dateinamen in einem test.txt Datei in ein array, und dann die Dateien löscht basierend auf dem Dateinamen im array. Hier ist, was ich habe, so weit...
#!/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 und remove_files.pl sind im selben Verzeichnis wie die Dateien entfernt werden. Ich kann nicht herausfinden, warum das Skript nicht löschen Sie die Dateien. Bin ich fehlt ein Modul?
Der erste Tipp wäre, um den Fehler zu überprüfen:
unlink($line) or warn "$0: could not unlink $line: $!\n"
InformationsquelleAutor Chad | 2012-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeilen aus einer Datei Lesen, die mit der readline-operator (
<...>
) enthält das newline-Zeichen. Sie müssen, um es zu entfernen, sonst werden Sie versuchen, löschen Sie eine Datei namens"myfile.txt\n"
statt"myfile.txt"
. Verwenden Perl -Mampf
Funktion trimmen Ihre Eingabe:chomp @data; unlink @data;
, da beide Befehle Listen als Argumente. I. e. keine Notwendigkeit für eine Schleife.Dann ist es schwieriger, um auf Fehler zu überprüfen.
Es wird so einfach werden, wie vorher auf Fehler überprüfen, aber im Falle eines Fehlers, Sie werden nicht in der Lage zu sagen, welche Datei konnte nicht gelöscht werden.
InformationsquelleAutor mob