필자는 함수를 호출하는 Perl 프로그램 (이 경우 ref
)을 사용하고 결과를 확인합니다. 특히 변수가 해시 참조 인 지 테스트하고 있습니다. 이 경우 ref
은 'HASH'
을 반환합니다. 나는 그것을 테스트했고 효과가 있었다.함수에서 반환 한 값을 연결하여 인쇄 할 수없는 이유는 무엇입니까?
그런 다음 동일한 호출 결과를 표시하는 print
을 추가하여 기록하기로 결정했으나 제대로 작동하지 않았습니다. 여기에 감소 된 버전입니다 :
ref $book_ref is a Program is over
그리고에도 불구하고
은 어느 오류도 경고가 있었다strict
및
warnings
를 사용하여 :
use strict;
use warnings;
my $book_ref = {};
$book_ref->{'title'} = 'The Lord of the Rings';
if (ref $book_ref eq 'HASH') {
print "ref \$book_ref is a " . ref $book_ref . "\n";
}
print "Program is over\n";
놀랍게도,이 출력되었다.
ref
에 대한 호출은 똑같습니다 (복사하여 붙여 넣기입니다). 그러나 if
조건에서 올바르게 작동하지만, print
은 아무 것도 표시하지 않고 줄 바꿈 문자가 명확하게 건너 뛰므로 실제로는 중단 된 것처럼 보입니다. 왜 행동이 바뀌 었습니까?
[인쇄 목록] (https://perldoc.perl.org/functions/print.html)의 쉼표를 사용하여 'print'값은 ", (코드)" "\ n"' – zdim
또는' printf' – toolic
또는 표현식 보간법을 사용하십시오 :'print "ref \ $ book_ref는 $ {\ ref $ book_ref} \ n" – mwp