質問: perl の構文に関する質問です。 このコードが何をやっているのか教えてください。 $_=3x(1E3-1),s/3/++$p%3*$p%5?7:5x$p/ge,print s/5//g 以下のコードと同じで3または5で割り切れる1000までの数を足した結果が得られることは知っていまが、それぞれの記号が何を意味するのか分かりません。 $sum=0; map {$sum += $_ if(!($_%3) || !($_%5))} 1..1000; print $sum; 最近 perl を使い始めたので良くわかっていません。 よろしくお願いします。
回答: ``` $sum=0; ``` 変数 $sum に 0 を代入。 ``` map {$sum += $_ if(!($_%3) || !($_%5))} 1..1000; ``` map { } 1..1000 で「1~1000まで、{}の中を繰り返し実行」します。 {}の中では実行されるたび、変数 $_ に1~1000が代入されます。そして 変数($_)が3で割り切れる、または変数($_)が5で割り切れるなら、合計($sum)に 仮変数($_)の値を足していきます。 ``` print $sum; ``` 最後に変数 $sum の値を表示。