[perl] Perl에서 문자열이 비어 있는지 확인하는 적절한 방법은 무엇입니까?

이 코드를 사용하여 문자열이 비어 있는지 확인했습니다.

if ($str == "")
{
  // ...
}

같지 않음 연산자도 마찬가지입니다.

if ($str != "")
{
  // ...
}

이것은 작동하는 것처럼 보이지만 (내 생각에) 올바른 방법인지 또는 예기치 않은 단점이 있는지 확실하지 않습니다. 뭔가 옳지 않다고 생각합니다.



답변

Perl에서 문자열을 비교하려면 eq또는 사용하십시오 ne.

if ($str eq "")
{
  // ...
}

==!=운영자는 숫자 비교 연산자. 두 피연산자를 비교하기 전에 두 피연산자를 정수로 변환하려고 시도합니다.

자세한 내용은 perlop man 페이지를 참조하십시오.


답변

  1. 문자열이 Perl에 저장되는 방식으로 인해 문자열 길이를 가져 오는 것이 최적화됩니다.
    if (length $str)문자열이 비어 있지 않은지 확인하는 좋은 방법입니다.

  2. 아직에 대해 보호하지 않은 상황에있는 경우 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
}


답변