2011-01-19 4 views
1

이 두 문장은 같은 의미입니까?이 두 문장이 같은가요?

if ($host eq '') { 
    print "Host exists\n"; 
} 

그리고

if (defined $host) { 
    print "Host exists\n"; 
} 
+0

어떤 종류의 질문입니까? – SLaks

답변

7

아니요, 이들은 다릅니다. 하나는 빈 문자열에 $host을 비교하고 다른 하나는 $host이 전혀 정의되어 있는지 (그리고 어떤 값이있을 수 있는지) 확인합니다.

+0

나는 정의 된 부분을 시도 할 때 작동하지 않을 것이고 내가 잘못하고 있다고 생각했기 때문에 그들은 같았지만 나는 본다. 해명 해줘서 고마워. – ianc1215

4

$host"localhost" 경우 제

, 서로 다른 수 있습니다.

+1

호스트가 내 스크립트의 변수를 참조하지 않습니다. – ianc1215

+0

@Solignis : 예, 변수'$ host'의 값이 "localhost"이면 정의되지만 ""와 같지 않으므로 두 명령문이 다른 결과를 생성합니다. –

3

당신이 첫 번째 변경하더라도 : 당신이 활성화 된 경고와 함께 실행하고 정의되지 않은 $host을 떠난 경우에 당신이 볼 것 같은

if ($host ne '') ... 

두 개의 문, 동등하지 않다.

$ perl -we 'my $host; print $host ne "" ? "Hi\n" : "Lo\n";' 
Use of uninitialized value $host in string ne at -e line 1. 
Lo 
$ perl -we 'my $host; print defined $host ? "Hi\n" : "Lo\n";' 
Lo 
$ perl -we 'my $host = ""; print defined $host ? "Hi\n" : "Lo\n";' 
Hi 
$ perl -we 'my $host = ""; print $host ne "" ? "Hi\n" : "Lo\n";' 
Lo 
$ 

답변 중 하나는 "안녕하세요"입니다. 빈 문자열은 훌륭한 값입니다. undef과 같지 않습니다.

+0

가능한 한 깨끗하게 코드를 작성하려고하기 때문에 궁금합니다. – ianc1215

관련 문제