사용자의 입력으로 디렉토리 이름을 가져 와서 파일을 검색하는 펄 스크립트를 사용하고 있습니다. 파일 검색 후 파일의 내용을 읽습니다. 파일 내용에 "크리켓"이라는 단어가 포함되어있는 경우 링크 해제 기능을 사용하면 파일을 삭제할 수 있습니다. 그러나 unlink
을 사용하면 "cricket"이라는 단어가 포함 된 파일은 코드 실행 후 여전히 디렉토리에 있습니다. 도와주세요. 내 코드는 다음과 같습니다 그들은 "크리켓"를 포함하지 할 경우 테스트 if($count==0) {...}
으로perl이 Unlink를 사용하여 파일을 삭제할 수 없습니다.
use strict;
use warnings;
use File::Basename;
print "enter a directory name\n";
my $dir = <>;
print "you have entered $dir \n";
chomp($dir);
opendir DIR, $dir or die "cannot open directory $!";
while (my $file = readdir(DIR)) {
next if ($file =~ m/^\./);
my $filepath = "${dir}${file}";
print "$filepath\n";
print " $file \n";
open(my $fh, '<', $filepath) or die "unable to open the $file $!";
my $count = 0;
while (my $row = <$fh>) {
chomp $row;
if ($row =~ /cricket/) {
$count++;
}
}
print "$count";
if ($count == 0) {
chomp($filepath);
unlink $filepath;
print " $filepath deleted";
}
}
해당 파일에 쓸 수있는 권한이 있습니까? – McKracken
열려있는 파일의 '연결 해제'를 시도하는 것 같습니다. –