2013-04-11 4 views
4

많은 펄 서적을 찾고 있었지만 대답을 찾을 수 없습니다. 나는이 코드를 가지고, 내가이하는 가정 무엇을하지 않으면 존재 IFF에, $ 티켓에 PARAM의 티켓을 할당 0Perl에서 '//'는 무엇을 의미합니까?

my $ticket = $params->{ticket} // 0; 
+3

명중. google'man perlop'을 실행하고 해당 페이지에서'//'를 검색하십시오. – Jokester

+5

잘못된 답변에 대한 사과. 제가 실수를. –

+0

"defined-or"연산자는 2007 년 12 월에 릴리스 된 버전 5.10의 Perl에 추가되었습니다. 따라서 5 년이 넘은 모든 책은 분명한 이유로 언급하지 않을 것입니다. –

답변

9

//defined-or을 의미 지정합니다. $ticket에는 정의 된 경우 $params->{ticket}이 지정되고 그렇지 않으면 0이 지정됩니다.

C에서 직접적으로 동일한 것은 아니지만 Perl의 // 연산자는 C 스타일 또는 C 스타일과 관련이 있습니다. 사실 ||과 정확히 동일 합니다만, 진실 대신 왼쪽면의 정의를 테스트합니다. 따라서 EXPR1 // EXPR2은 정의 된 경우 EXPR1의 값을 반환하고, 그렇지 않으면 EXPR2의 값이 반환됩니다.

added in 5.10입니다.

위의 코드에서 $params->{ticket}은 여전히 ​​가비지가있을 수 있으므로 값을 사용하기 전에 값이 예상 된 패턴을 준수하는지 확인하십시오.

4

documentation는 말한다 :

는 "EXPR1 // expr2이 그것이 정의되어있는 경우는 true, 그렇지 않은 경우, expr2이 값이 반환됩니다 EXPR1의 값을 반환합니다."

이것은 논리 또는 테스트 정의와 유사합니다.