2014-09-24 7 views
8

이 동작은 Math :: BigInt와는 다르지만 다음 코드는 마지막 줄에서 중단됩니다.메서드 호출이 스칼라 컨텍스트를 제공하지 않습니다 ... 이상하게 보임

use strict; 
use warnings; 
use Math::BigInt; 

my $a = Math::BigInt->bone; 
my $b = Math::BigInt->bone; 

print ($a+$b)->bfac; 

이 코드는, 그러나, 잘 작동 :

use strict; 
use warnings; 
use Math::BigInt; 

my $a = Math::BigInt->bone; 
my $b = Math::BigInt->bone; 

print scalar($a+$b)->bfac; 

내 질문은 이것입니다 ...하지 스칼라 문맥의 왼쪽 인수에 자동으로 부과하는 이유 "->"? AFAIK, "->"는 스칼라와 (예외적으로) 타입 글롭에서만 작동합니다. 코드는 다음과 같이 해석과 같이 괄호 하나 더 설정이 필요

+0

아, 완벽합니다. 나는 더주의 깊게 경고를 읽어야했다 ... 고마워. –

답변

10

,

print (($a+$b)->bfac); 

,

(print ($a+$b))->bfac; 

및 경고도 그렇게 해석 아니에요 + 필요 당신에게 print (...) interpreted as function ..

7

했다 인수로 print.

print +($a+$b)->bfac; 
관련 문제