파이프 처리중인 Perl 스크립트가 있습니다. 어떤 시점에서 스크립트를 일시 중지하고 사용자 키보드 입력을 요청합니다. my $input = <STDIN>;
이 작동하지 않습니다. 파이프에서 다음 줄을 읽습니다. Perl이 파이프 입력과 키보드 입력에 다른 핸들을 사용하도록하려면 어떻게해야합니까?Perl은 파이프 입력과 키보드 입력을 위해 다른 핸들을 사용하는 방법?
6
A
답변
12
Unix 플랫폼을 사용하는 경우 파일 핸들을 /dev/tty
(또는 IO::Pty
)으로 열 수 있습니다. TTY 작업의
좋은 예는 여기에서 예 "프로그램이 대화 형으로 실행중인 테스트 여부"에 있습니다 http://pleac.sourceforge.net/pleac_perl/userinterfaces.html
Term::ReadKey
를 통해 비밀번호 IO를하고 고려해야한다
은 (perlfaq8에 설명) - 나는 그것이 TTY에 연결 할 수있다 생각 STDIO 대신에 잘 모르겠다. 그렇지 않으면 this SO answer by brian d foy 끝에 나열된 TTY + Term :: ReadKey 솔루션을 사용하십시오.
다음은 예입니다.
It's not the best style (doesn't use 3-arg form of open
, nor uses lexical filehandles) 그러나 작동해야합니다.
use autodie; # Yay! No "or die '' "
use Term::ReadKey;
open(TTYOUT, ">/dev/tty");
print TTYOUT "Password?: ";
close(TTYOUT);
open(TTY, "</dev/tty");
ReadMode('noecho');
$password = ReadLine(0, *TTY);
관련 문제
- 1. C#을 사용하여 창 핸들을 가져오고 키보드 입력을 비활성화하는 방법?
- 2. jQuery-UI 슬라이더 - 키보드 입력을 비활성화하는 방법?
- 3. 소프트 키보드 입력을 잡는 방법
- 4. iPhone에서 ASCII 호환성을 위해 키보드 입력을 확인하십시오.
- 5. Faroese 키보드 입력을 위해 Emacs에서 기존 입력 방법 수정하기
- 6. 파이썬으로 키보드 입력을 가짜로 만드는 방법
- 7. 키보드 "쐐기"입력을 처리하는 가장 좋은 방법
- 8. 텍스트 입력과 html의 선택 입력을 함께 사용
- 9. 다른 활동을 위해 다른 키보드 시작
- 10. C# 키보드 입력을 텍스트로 변환하는 방법
- 11. 키보드 입력을 멈추었습니까?
- 12. 체크섬과 파이프 입력을 동시에 수행
- 13. 다른 장치들로부터 입력을 결정
- 14. 홈 메이드 OS에서 키보드 입력을 얻는 방법?
- 15. 사용자 키보드 입력을 읽는 방법? 순간
- 16. 팝업 컨트롤에서 키보드 입력을 함정에 넣는 방법
- 17. UI 자동화를 위해 키보드 입력을 저장하고 다시 보내는 방법은 무엇입니까?
- 18. Winform에서 키보드 입력을 읽으려면 어떻게해야합니까?
- 19. 사용자 입력을 저장하고 사용하는 방법
- 20. 대기 핸들을 사용하는 조건부주기 타이머
- 21. 유닉스 파이프 처리 방법
- 22. 창 핸들을 사용하여 P/Invoke를 사용하여 마우스 클릭 및 키보드 입력을 비활성화합니다
- 23. perl은 시간 입력을 기준으로 로그 파일을 구문 분석합니다.
- 24. NSWindow의 다른 컨테이너에서 핸들을 끌기
- 25. 배열 입력을 위해 MySQL에 데이터를 저장하는 방법
- 26. 입력을 위해 콤보 박스를 잠그는 방법
- 27. 프로세스 '핸들을 열거하는 방법?
- 28. WinAPI : 사용자 정의 편집 컨트롤에서 키보드 입력을 처리하는 방법
- 29. 키보드 캡처를 위해 read()
- 30. 입력과 같은 요소에
문제가 해결되었습니다. 고마워. – Arkady
@Arkady - 여러분을 환영합니다. 답변 옆에있는 체크 표시를 클릭하여 답을 수락하십시오 (답변을 2 점 얻음). 또한 답변의 위쪽에 투표하십시오 (옆에있는 위쪽 화살표). – DVK