ProgramingTip

Perl에서 "eq"대 "=="문자열 비교

bestdevel 2020. 10. 12. 07:54
반응형

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?

(다른) $str1eq '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

반응형