2013-03-18 2 views
0

내가 /tmp 폴더에 "1.1.1.1"IP 주소로 파일을 삭제하려면 "글로브"와 "연결 해제"기능 usge :

# ls -1 /tmp 
1.1.1.1_Reboot.xml 
1.1.1.1_Roll.xml 
1.1.1.1_Setup.xml 
1.1.1.2_Reboot.xml 
1.1.1.2_Roll.xml 
1.1.1.2_Setup.xml 

내가 말하는거야 : unlinkglob 여기

입니다 내 코드 :

#!/usr/bin/perl -w 
use strict; 

my $DIR  = "/tmp"; 
my $IP  = '1.1.1.1'; 

unlink glob $DIR."/".$IP."*"; 

그러나 파일을 삭제하는 것은 아닙니다. 내 의심은 glob 기능에 있으며 올바른 방식으로 사용하지 않을 것으로 생각됩니다.

도와 주시겠습니까? 감사합니다. .

UPDATE :

내가 IP 주소 자체가, 다음이 파일을 삭제한다와 $IP을 대체합니다. unlink 문이 변수 $IP의 가치를 평가 할 수없는 것처럼

unlink glob $DIR."/"."1.1.1.1"."*"; 

그래서 것 같습니다. 왜 이런 식으로 행동하는지 모르겠다. 나는 그것의 명시적인 가치가 아니라 $IP와 함께 작동하게 만들 필요가있다.

답변

0

경로로 되돌아 갈 수 있습니다. 자세한 정보를 보려면 오류를 인쇄하십시오. 이것을 시도하십시오 :

#!/usr/bin/perl -w 
use strict; 

my $DIR  = "/tmp"; 
my $IP  = '1.1.1.1'; 

chdir $DIR; 
my @goners = glob $IP . "*"; 

foreach my $file (@goners) { 
    print "file: $file\n"; 
    next unless $file =~ m!^1\.1\.1\.\d_!; 
    print "file to delete: $file\n"; 
    unlink $file or warn "Could not unlink $file: $!"; 
} 
+0

이것을 시도하십시오. 어떤 오류도 던지지 않습니다. 파일은 아직 거기에 있습니다 .. – slayedbylucifer

+0

삭제 1.1.1.12 – ikegami

+0

당신을 도울 수있는 인쇄 문장 세트를 추가했습니다. @ikegami가 지적한 문제를 확인합니다. –