open( $OutFh, "> output.txt" ) or die $!;
my $some_result = "This will be shown on both terminal and `output.txt'"
print $_ $some_result for( STDOUT, $OutFh );
만일 리디렉트를 피할 수 없는 상황이면
터미널을 파일핸들러로 여셔야 합니다. 그러면 포터블한 코드는 아니지만
unix계열에서는 /dev/tty를 여시면 되고
좀 전과는 반대로 STDOUT으로 출력한 내용이 파일로 가고
새롭게 연 파일핸들이 터미널과 연결이 됩니다.
open( $TTYFh, "> /dev/tty" );
my $some_result = "This will be shown on both terminal and `output.txt'"
print $_ $some_result for( STDOUT, $TTYFh );
후자의 경우에는 윈도우에서는 지금 테스트 할 수 없는데 혹시 다른 방법이 있을 듯 싶네요.
또한 굳이 STDERR를 다른 용도로 사용하지 않으신다면 그 기본 파일 핸들을 이용하는 것도 괜찮지 않을까요?
tee 명령어를 보시면
tee 명령어를 보시면 될 것같네요.
원하는 텍스트만 화면에 출력하고 싶습니다.
tee 에 대해서 찾아봤습니다.
tee 로 접근하게 되면 화면 or 파일로 선택적으로 출력할 수 없을거 같네요.
정확하게 제가 원하는건 perl 에서 어느 file descriptor 로 보낼지를 결정할 수 있게 하는 것입니다.
제 생각엔.. perl 상에서 해야 할거 같은데 말이죠.. (perl 문서를 뒤적거리고 있습니다..)
쉘에서 리디렉트
쉘에서 리디렉트 시키지 마시고 펄 상에서 해보십시오.
만일 리디렉트를 피할 수 없는 상황이면
터미널을 파일핸들러로 여셔야 합니다. 그러면 포터블한 코드는 아니지만
unix계열에서는 /dev/tty를 여시면 되고
좀 전과는 반대로 STDOUT으로 출력한 내용이 파일로 가고
새롭게 연 파일핸들이 터미널과 연결이 됩니다.
후자의 경우에는 윈도우에서는 지금 테스트 할 수 없는데 혹시 다른 방법이 있을 듯 싶네요.
또한 굳이 STDERR를 다른 용도로 사용하지 않으신다면 그 기본 파일 핸들을 이용하는 것도 괜찮지 않을까요?
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
STDERR 로 깔끔(?) 하게 되긴 하네요.
STDERR 로 깔끔(?) 하게 되긴 하네요.
단지 느낌상 로그가 아닌 에러라는 기분이 들긴 하지만.. 터미널을 여는 방법보다는 깔끔하네요.
생각해보니.. 그냥 redirect 안시키고 파일이름을 argument 로 주는 방법이 더 낫겠군요.
어쨋든 답변 감사합니다~ :-D
댓글 달기