이 코드를 사용하여 문자열이 비어 있는지 확인했습니다.
if ($str == "")
{
// ...
}
같지 않음 연산자도 마찬가지입니다.
if ($str != "")
{
// ...
}
이것은 작동하는 것처럼 보이지만 (내 생각에) 올바른 방법인지 또는 예기치 않은 단점이 있는지 확실하지 않습니다. 뭔가 옳지 않다고 생각합니다.
답변
Perl에서 문자열을 비교하려면 eq
또는 사용하십시오 ne
.
if ($str eq "")
{
// ...
}
==
및 !=
운영자는 숫자 비교 연산자. 두 피연산자를 비교하기 전에 두 피연산자를 정수로 변환하려고 시도합니다.
자세한 내용은 perlop man 페이지를 참조하십시오.
답변
-
문자열이 Perl에 저장되는 방식으로 인해 문자열 길이를 가져 오는 것이 최적화됩니다.
if (length $str)
문자열이 비어 있지 않은지 확인하는 좋은 방법입니다. -
아직에 대해 보호하지 않은 상황에있는 경우
undef
경고하지 않는 “비어 있지 않은”항목은if (defined $str and length $str)
.
답변
“==”대신 “eq”를 사용하고 싶을 것입니다. 일부 예외적 인 경우에 대해 걱정하는 경우 정의되지 않은 항목도 확인해야 할 수 있습니다.
if (not defined $str) {
# this variable is undefined
}
답변
이미 여러 사람이 언급했듯이 eq
했듯이은 여기에서 올바른 연산자입니다.
use warnings;
스크립트에있는 경우 이에 대한 경고 (및 기타 많은 유용한 정보)가 표시됩니다. 나도 추천 use strict;
합니다.
답변
CPAN을 사용하는 것 외에 어떤 일을하는 “적절한”방법이라는 개념은 Perl에 존재하지 않습니다.
어쨌든 그것들은 숫자 연산자입니다.
if($foo eq "")
또는
if(length($foo) == 0)
답변
빈 문자열을 확인하려면 다음과 같이 할 수도 있습니다.
if (!defined $val || $val eq '')
{
# empty
}