정말 간단하게 보이지만 어떤 이유로 그 문제를 해결할 수없는 문제가 있습니다. 기본적으로 내 프로그램은 무한 루프를 일으키고 있으며 이유를 모르겠습니다. 내가 그것을 실행하면루프가 무한 루프를 일으키는 동안 왜 이렇게 간단합니까?
$response1 = false;
while($response1 == false){
print "Input column #: ";
$column = <STDIN>;
chomp($column);
if($column =~ m/^[0-9]+$/ and $column >= 0){
$response1 = true;
} else {
print "Invalid response\n";
}
}
, 그냥 "Input Column #"
저를 요구 유지 :
는 여기가에 걸리지있어 특정 루프입니다. 숫자를주고 숫자를 받으면 $ 반응은 True로 바뀌지 만 while 루프는 마치 $response
이 false 인 것처럼 계속 진행합니다. 나는 Perl을 처음 사용하기 때문에 누락 된 부분이있을 수도 있지만 while ($response == false)
은 $response
이 true가되면 루프가 종료되어야한다는 것을 나타 냅니까?
여기 참조를 위해 전체 코드입니다 : 코멘트에서 언급 한 바와 같이
#!/usr/bin/env perl
#Input control
my $response1;
my $response2;
my $response3;
my $quit = false;
#User input
my $column;
my $row;
my $continue;
#result
my $result;
#pascal subroutine
sub pascal{
$r = $_[0];
$c = $_[1];
if($r == 0 and $c == 0){
return 1;
} else {
return (($r-$c+1)/$c)*&pascal($r,($j-1));
}
}
print "Pascal Triangle Calculator\n";
while($quit == false){
$response1 = false;
$response2 = false;
$response3 = false;
while($response1 == false){
print "Input column #: ";
$column = <STDIN>;
chomp($column);
if($column =~ m/^[0-9]+$/ and $column >= 0){
$response1 = true;
} else {
print "Invalid response\n";
}
}
while($response2 == false){
print "Input row #: ";
$row = <STDIN>;
chomp($row);
if($row =~ m/^[0-9]+$/ and $row >= 0){
$response2 = true;
} else {
print "Invalid response\n";
}
}
$result = &pascal($row,$column);
print "The number at row $row and column $column of the Pascal triangle is $result\n";
while($response3 == false){
print "Calculate another? y/n: ";
$continue = <STDIN>;
chomp($continue);
if($continue == m/[yYnN]/){
$response3 = true;
} else {
print "Invalid response\n";
}
}
if($continue == m/[nN]/){
$quit = true;
}
}
print "Goodbye!\n";
'use strict; 경고를 사용하십시오; 진단을 사용하고, ' –
'use strict; 경고를 사용하십시오. "실제로 오류 (및 기타 오류)가 표시됩니다. 항상 이것들을 사용하십시오! – ikegami
'true'와'false'는 Perl에서 불리언 값이 아닙니다. 어떤 모듈이나 다른 특별한 기능이로드되지 않으면, 그들은 barewords입니다. 문자열은 부울 컨텍스트에서는 true이지만 숫자 컨텍스트'=='에서는 false입니다. – TLP