2012-06-28 11 views
0

디렉토리의 파일을 찾고 있습니다. 파일을 찾을 수없는 경우 해당 파일의 이름을 배열에 보내려고 루프가 완료 될 때까지 찾지 못한 파일 배열을 갖게됩니다. 이 코드를 Perl로 어떻게 작성합니까?변수 값을 배열에 추가하려면 어떻게합니까?

foreach $missing (@miss) { 
    chomp $missing; 
    ($a,$b)=split(/\.m_inproc./,$missing); 

    @find = `find /home1/users/virtual/ -name .m_inproc.$b`; 
    $find_size = scalar @find; 
    $flag = "/home1/t01jkxj/check_st/flags/$b"; 

    if ($find_size < 1 && -e $flag) { 
     $doit = `$b > @re_missing`; 
    } 
} 

이 내 검색 코드이며,이 파일을 찾을 수없는 경우 ($find_size는 1보다 작지)과 (우리가 전에이 검색을 수행 한 의미) 플래그 파일이 있습니다. 해당 변수 $b (파일 이름)을 배열에 씁니다. 분명히, 내 구문은 현재 ($doit = $b > @re_missing;)입니다. 무엇이 될까? 감사!

+0

'@의 missing'에 무엇입니까? '@ missing '요소가 파일의 전체 경로입니까? 파일이 옮겨 졌을 것으로 기대합니까? 또는 전체 경로가 올바르지 않습니까? –

답변

1

방법에 대해 : 사용 그런데

push @re_missing, $b 

, $ a와 $ b 나쁜 형태입니다. 이것은 sort에 대한 비교기 본문에 사용 된 암시 적으로 선언 된 변수입니다.

0

코드의 전체 컨텍스트는 확실치 않지만이 코드는 이미 구현 된 파일 크기 확인과 결합하여 올바른 방향으로 이동해야합니다. 짧은 대답은 "USE PUSH"이지만, 코딩 일처럼 느껴졌습니다. 불필요한 독서와 "push push"가 원인이된다면 너무 미안합니다.

#usr/bin/perl 
use strict; 
use warnings; 

my @files = ("tester.txt", "pooter.txt", "output.txt"); 
my @notfound; 


foreach(@files) 
{ 
    if (!(-e $_)) 
    { 
     push (@notfound, $_); 
    } 
} 

foreach(@notfound) 
{ 
    print $_; 
} 
0
my @missing_files = grep { ! -e } @files_to_search_for; 
+1

'find'는 하위 디렉토리에서도 검색을한다고 생각합니다. 이것은 간단한'File :: Find' 기반 솔루션에 대해 울부 짖습니다. –

관련 문제