2016-12-25 9 views
2

여러 개의 HERE-DOC를 입력해야합니다. 내 코드에는 2 개의 while 루프가 있습니다. 내부 루프는 here-doc 다중 행을 가져 오는 데 사용됩니다. 그러나 Control-D를 입력하여 here-doc을 완료하면 inner while 루프가 다시 실행되지 않고 외부 루프가 무한히 실행됩니다. 그것을 고치는 가장 좋은 방법은 무엇입니까?

while True { 
    my $y = ""; 
    my $x = 32; 
    while $x=$*IN.getc { 
     $y = $y ~ $x; 
    } 
    say "=========="; 
    say "[$y]"; sleep 2; 
} 

$ x를 32로 재설정 한 후에도 $ x가 계속 EOF가되는 이유는 무엇입니까? 왜 EOF는 $ * IN에 갇혀 있습니까? 도와 줘서 고마워.

답변

2

Ctrl + D를 누르면 터미널은 stdin 스트림을 끝내고 Perl 6이 계속 읽기를 시도 할 때 항상 EOF를 얻습니다.

프로그램에서 내부 루프 while이 종료됩니다. 그런 다음 $x32으로 다시 설정하지만 내부 while 루프의 다음 시작시 $x = $*IN.getc은 즉시 스트림이 닫혀 있기 때문에 Nil으로 다시 설정합니다.

+0

좋아요, 이제 알겠습니다. 나는 Ctrl-D를 함께 피함으로써이 문제를 해결했다. 감사합니다 다시 smls !! – lisprogtor