echo "Hello"
부분에 액세스 할 수 있으며 해당 명령의 출력 인 Hello
도 가능합니다.
Perl은 이러한 기능을 제공하지 않습니다. 스크립트/프로그램이 실행되는 프로세스에는 실행되기 전에 동일한 터미널에서 발생한 일에 대한 고유 한 지식이 없으므로 프로그래밍 언어는 그러한 기능을 제공하지 않거나 제공 할 수 없습니다. 이 텍스트에 접근 할 수있는 유일한 방법은 현재 실행중인 터미널에이 정보 (스크롤백 버퍼)의 기록을 남길 수 있는지 여부입니다. 텍스트에서 어떤 문자가 입력되었는지를 구분할 수는 없지만, 출력됩니다. 그러나 공개 API를 통해 정보를 노출하는 터미널이 없다는 것을 알고 있습니다.
그래서 myscript.pl에서 echo "Hello"
에 액세스 할 수있게하려면 스크립트에 전달해야합니다. 스크립트에 history
을 파이프하면 (그의 답변에서 Mark Setchell이 보여준 것처럼) 하나의 기술입니다. history
은 쉘이 내장되어 있으므로 쉘이 가지고있는 지식만큼이나 (터미널과 같은 지식이 아닙니다). 특히이 쉘 세션에서 입력 된 명령 목록을 제공 할 수 있습니다. 그러나이 명령으로 생성 된 출력에 대해서는 알 수 없습니다. (
my @history = `tcsh -c history`;
(할 매우 복잡 할 것입니다하지만) 당신이 시도 할 수 마지막 것은이 X 서버를 요청하는 것입니다 : 그리고 다른 쉘 세션에 대해 말해, 그래서 펄이 일을하는 것은 매우 쓸모가 없습니다 또는 해당 운영 체제에서 실행중인 경우 Windows) 스크린 샷을 표시 한 다음 현재 터미널이 실행중인 사각형을 찾아서 OCR을 수행하십시오. 겹치는 창을 다루는 등의 문제가 발생할 수 있습니다.
요약하면이를 수행 할 수 없습니다. Perl과 아무 관련이 없습니다. 어떤 프로그래밍 언어로도 이것을 할 수 없습니다.
나는'my $ input =; '을 원한다고 생각하지만, 사용자가 실제로 입력을하고 엔터를 누를 때까지 코드가 중단됩니다. 또한'chomp ($ input);을 사용하고 싶습니다. –
Fluff
확장 할 수 있습니까? 나는 펄을 처음 사용합니다. 지난 2-3 일을 시작했습니다. –
다음 코드를 사용해보십시오 : 'print "이름을 입력하십시오 :"; my $ input =; chomp ($ input); print "Hello $ input, 만나서 반갑습니다. \ n"; ' –
Fluff