Perl/외부프로그램실행 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: Perl/외부프로그램실행 는 읽기 전용 페이지입니다.
[[Perl]]에서 다른 프로그램 실행하기 == # pipe == pipe를 통한 입출력
{{{#!vim perl # 출력 파이프 open (OUT, "|more") or *OUT = *STDOUT; # 입력 파이프 open (IN, "lynx|") or die "Couldn't start lynx"; }}} 파이프를 쓴 후에는 반드시 close를 해 주자.
open을 인자 3개 형식으로 사용할 경우는 출력은 "|-", 입력은 "-|"로 표기.
== # system == 프로그램을 실행시키고, 종료할 때까지 대기.
쉘을 거쳐서 프로그램을 실행하는가, perl이 직접 실행하는가의 차이에 주의
* system("dir $files"); - 쉘을 띄움. ** 데이타가 외부에서 들어오는 경우 위험. $files의 값이 "; rm -rf /"로 들어가는 경우 등. * system ( $program, @arguments ); 형태로 호출하면 perl이 직접 $program을 실행시킴 * 이런 이유로, 첫번째 형태더라도, 스트링에 special shell character(*, ?, |, <, &, >)가 포함되어 있지 않은 경우에는 두번째 형태로 변환하여 perl이 직접 실행한다. 실행된 프로그램의 종료코드값은 $?의 값을 128로 나누면 된다...라고 Beginning perl에 나와 있으나, perldoc -f system의 말과 테스트에 의하면 256으로 나눠야 한다. $?에 대해서는 [[/에러처리]] 참조. 더 자세한 내용은 [[/System]] 참고 == # backtick, qx() == 실행된 프로그램의 표준출력을 리턴한다. * 리스트 문맥 - 출력의 각 라인을 원소로 하는 리스트 반환 * 스칼라 문맥 - 출력 전체 실행에 실패하면 $!변수에 에러 메시지가 담김. == # 기타 & comments == * [http://advent.perl.kr/2013/2013-12-12.html 열두번째 날: 펄에서 외부명령어 실행 시키기 | R.I.P. @am0c - Seoul.pm 펄 크리스마스 달력 #2013]
----
---- [[컴퓨터분류]]
Perl/외부프로그램실행
페이지로 돌아가기 |
다른 수정본 보기