2014-05-21 9 views
1

난 그냥 펄에서 간단한 fizzbuzz 프로그램을 작성 :여러개 쓰기 줄 바꿈 (펄 5)

#!/usr/bin/perl 
for $a (1..100) { 
    print ($a%15 ? ($a%3 ? ($a%5 ? $a : "buzz") : "fizz") : "fizzbuzz") . $/; 
} 
그것은 일종의 작동

하지만, 어떤 이유로 내가 출력에 줄 바꿈을받지 못했습니다 : 나는 이것을 알고

12fizz4buzzfizz78fizzbuzz11fizz1314fizzbuzz1617fizz19buzzfizz2223fizzbuzz26... 

은 루프의 끝 부분에 별도의 문으로 print $/;을 추가하여 해결할 수 있습니다,하지만 난이 필요해야하는 이유를 알아낼 수 없습니다.

내가 뭘 잘못하고 있니?

답변

6

내가 뭘 잘못하고 있니?

당신은 효과적으로 print 반환 값과 $/을 연결 print ("foo") .$/을하고 있습니다.

warnings를 사용하면 당신에게 ()

print (($a%15 ? ($a%3 ? ($a%5 ? $a : "buzz") : "fizz") : "fizzbuzz") . $/); 
+1

아, 알겠습니다. 감사! (다음에 경고를 사용하도록 기억하려고 노력할 것입니다.) –

1

다음 문으로 모두를 둘러싸 Useless use of concatenation (.) or string in void context

시도를 줄 것이다

print ($a%15 ? ($a%3 ? ($a%5 ? $a : "buzz") : "fizz") : "fizzbuzz") . $/; 

등호 (자세한 이하)

my $t = print ($a%15 ? ($a%3 ? ($a%5 ? $a : "buzz") : "fizz") : "fizzbuzz"); 
$t . $/; 

이제 문제를 볼 수 있다고 생각합니다.