Próbuję napisać skrypt perla, który odczytuje nazwy plików w pliku test.txt do tablicy, a następnie usuwa pliki oparte na nazwach plików w tablicy.
#!/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 i remove_files.pl znajdują się w tym samym katalogu, co pliki do usunięcia. Nie mogę zrozumieć, dlaczego skrypt nie usunął plików. Czy brakuje mi modułu?
Odpowiedzi:
11 dla odpowiedzi nr 1Linie czytane z pliku za pomocą operatora readline (<...>
) będzie zawierać znak nowej linii. Musisz go usunąć, w przeciwnym razie będziesz próbował usunąć plik o nazwie "myfile.txtn"
zamiast "myfile.txt"
. Użyj Perla chomp
funkcja przycinania danych wejściowych:
foreach $line (@data){
chomp($line);
unlink($line);
}