2010-04-04 2 views
1

에서 일을 내가 지금 파일는 어떻게,이 시스템 호출이다 펄

system("${tarexe} -pcvf $tarname $includepath") which works fine. 

$tarexe -> location of my tar.exe file 
$tarname -> myMock.tar 
$includepath -> ./input/myMockPacketName ./input/myPacket/my2/*.wav ./input/myPacket/my3 ./input/myPacket/in.html 

타르 펄에서 지금하고 있어요 "시스템 호출 (태그를 제외와 함께) 파일을 타르"어떻게해야합니까 내가 파일

system("${tarexe} -pcvf $tarname $includepath --exclude $excludepath") 

$excludepath -> ./input/myMockPacketName/my3 

같은 stament

${tarexe} -pcvf $tarname $includepath --exclude $excludepath 

doesnot 작업을 제외 doesnot 태그를 제외하여 일부 파일을 제외 할 명령 줄에서 실행할 때.

+0

을하는 이유가있을 수 있습니다 동의 그래서 당신은'--exclude' ISN을 의미 일하는거야? –

+0

--exclude 태그와 함께 perl에서 시스템 호출을 할 때 디렉토리를 제외하지 않습니다 (포함 된 경로를 tars합니다). – superstar

+0

이것은 질문 한 것과 매우 유사합니다. http://stackoverflow.com/questions/2545955/ how-can-i-tar-multiple-files-in-perl – justintime

답변

1

@superstar 찾을 수 없습니다 -

가 특정 질문을 asnwer하기를, --exclude는 아마도 GNU tar를 떠 올린 "./input/myMockPacketName/my3"대신 "./input/myMockPacketName/my3/*"이어야합니다. 또한, 포함 된 파일 이름은 --exclude 후 처리됩니다. 이는 제대로

하지만

을 인용해야하는 이유 요구 사항은 어떻게 무엇을해야하는지에 반대 물건을 수행하는 방법을 말하고있다?

는 숙제가 아니라면

(이 경우에 대한 선행주세요) ... 또는 그는 업계 표준 모범 사례가 있음을 그들은 정중하게 교육을해야하는 경우 일부 회사의 일반적인 아키텍처 팀의 요구 사항 (이다 가능할 때마다 Perl의 네이티브 라이브러리를 사용하라. 명확한 이유가없는 한) ...

이 두 가지 경우에는 구현 방법을 결정해야한다.

+0

나는 이것을 시도했다 -> "./input/myMockPacketName/my3/*" 그러나 그것은 작동하지 않는다 – superstar

+0

장소를 제외하고 포함 시키려고 했습니까? – DVK

+0

또한 출력/오류를 파일로 리디렉션하고 인쇄 된 내용을 확인하려고 했습니까? – DVK

3

--exclude이 작동하지 않는 이유에 대한 실마리가 없습니다. 하지만 system이 사용 중일 때 필자가 가장 좋아하는 perl advice를 줄 것이다.

은 물론

가 때로는 필요하지만 대신 일을 할 수있는 CPAN 모듈이있는 경우 먼저 확인하지 마십시오. 이 경우 나는 일반적으로 내가 Archive::Tar을 사용 Archive::TarGzip을 제안하지만 --exclude 기능 (이있을 수 있습니다, 그래서 난 단지 얼핏 있었다)

+0

저에게 응답 해 주셔서 감사합니다. 명령 행에 같은 명령을 입력 할 때 --exclude 태그가 작동했습니다. 하지만 그것은 펄에서 시스템 콜에서 똑같은 것을 호출 할 때 작동하지 않습니다. (필자는 요구 사항에 따라 tar.exe를 사용해야하기 때문에 여기서 시스템 호출을해야합니다.) – superstar

2

회원님이 앞으로이 같은 문제를 아래 핀 도움이 될 문제지만 힌트에 직접 답 :

system("${tarexe} -pcvf $tarname $includepath --exclude $excludepath") 

쓰기

보다는 할

my $command = "${tarexe} -pcvf $tarname $includepath --exclude $excludepath" ; 

print "About to run $command\n" ; 
system $command ; 
같은

그러면 getnerated 출력을 잘라내어 새 터미널 창에 붙여 넣을 수 있습니다. 또는 생성 된 명령이 생각한 바가 아님을 알 수 있습니다.

면책 조항는 - 나는 펄 타르 모듈을 사용하는 것이 더 좋을 것이라고이 질문에 ansewred 한 대부분의 사람들이 동의하지만,이 방법

+0

현명한 제안 주셔서 감사. 나는 그것을 시도하고 $ 명령을 내가 기대 (명령 줄에서 실행 동일한 명령)하지만 출력 디렉터리를 제외하지 않습니다. 이 명령들이 기계마다 다르다고 생각하십니까? – superstar

+0

문제는 Perl보다는 TAR로하는 것이 좋습니다. "tar --help"를 시도 할 수 있습니다. 명령 행에서 간단한 테스트 케이스로 시도 할 수있다. – justintime

+0

은 동일한 명령이 명령 행에서 (--exclude를 사용하여) 경로를 제외하기 때문에 Perl로부터의 시스템 호출에 대한 문제입니다. 하지만 Perl (시스템 호출)에서 이제는 포함 경로를 잘 tars하지만 excluded 경로는 제외하지 않았습니다. – superstar

관련 문제