Perl에서 "eq"대 "=="문자열 비교
이 질문에 이미 답변이 있습니다.
나는 (완전한 Perl) if
문을 비교하고 있습니다 .
다음을 수행하는 경우 :
if ($str1 == "taste" && $str2 == "waste") { }
(즉, 조건이 일치하면 "then"블록을 평가합니다). 하지만 다음과 같은 경고가 표시됩니다.
인수 "taste"는 줄 번호 x에서 숫자 eq (==)의 숫자가 아닙니다.
인수 "waste"는 줄 번호 x에서 숫자 eq (==)의 숫자가 아닙니다.
하지만 내가 할 경우 :
if ($str1 eq "taste" && $str2 eq "waste") { }
if 조건이 좋습니다.
여기서, $str1
이다 taste
하고 $str2
있다 waste
.
이 문제를 어떻게 해결해야합니까?
첫째, eq 는 동일한 것을 비교하기위한 것입니다. == 는 숫자를 비교하기위한 것입니다.
"if"조건이 좋지만 "then"블록을 평가하지 않습니다.
나는 당신의 변수가 당신이 생각하는 것을 포함하지 않습니다. 귀하의 $str1
또는 $str2
"맛 \ n"등이 포함 된 것입니다. if : 전에 인쇄하여 확인 하십시오 print "str1='$str1'\n";
.
후행 개행은 chomp($str1);
함수 로 제거 할 수 있습니다 .
==
숫자 비교를 수행합니다. 두 인수를 숫자로 변환 한 다음 비교합니다. 만큼 $str1
하고 모두 숫자 $str2
로 0 평가, 조건이 만족 될 것입니다.
eq
이동 비교를 수행합니다. 조건이별로 되려면 두 인수가 어휘 적으로 (대소 문자 구분) 일치해야합니다.
"foo" == "bar"; # True, both strings evaluate to 0.
"foo" eq "bar"; # False, the strings are not equivalent.
"Foo" eq "foo"; # False, the F characters are different cases.
"foo" eq "foo"; # True, both strings match exactly.
$str1
과 를 씹으려고 했습니까 $str2
?
(다른) $str1
eq 'Y' 를 사용하는 것과 동일한 문제를 발견했을 때 처음부터 사라졌습니다.
chomp($str1);
if ($str1 eq 'Y') {
....
}
그 후에 작동합니다.
도움이 되셨기를 바랍니다.
사용중인 조건이 없습니다.
$str1 == "taste" && $str2 == "waste"
이 프로그램은 THEN
우선 조건이 모두 참인 경우에만 부분적으로 시작됩니다.
으로 시도 할 수 있습니다 $str1 == "taste" || $str2 == "waste"
. THEN
위의 조건 중 하나라도 참이면 파트 를 실행 합니다.
참고 URL : https://stackoverflow.com/questions/14046669/string-compare-in-perl-with-eq-vs
'ProgramingTip' 카테고리의 다른 글
한 줄로 LHS에 여러 새 변수 할당 (0) | 2020.10.12 |
---|---|
iOS5 Storyboard UIViewController 어떤 init 메소드가 스토리 보드에서 호출? (0) | 2020.10.12 |
왜 'git log'를 퇴직해야합니까? (0) | 2020.10.12 |
다수의 실행중인 프로세스에 콘솔을 사용합니까? (0) | 2020.10.12 |
캐스팅과 강제의 차이점은 무엇입니까? (0) | 2020.10.12 |