#!/usr/bin/env perl6
my $column = 1; # left to right, starts with 0
my $sum = 0;
for $*IN.lines() -> $line {
my $value = ($line.chomp.split(','))[$column];
$sum += $value if $value ~~ m{^ \d+ $};
# $sum += $value unless $value ~~ m{\D}; # more literal
}
say "sum: $sum";
# ポイント1:
# strictとwarningsプラグマは、デフォルトで有効となっている。
# ただしwarningsについては、プラグマとして実装されていない模様。
# ポイント2:
# 標準入力ファイル記述子($*IN)のlines()メソッドにより、
# Pythonと同様に、for文で1行ずつ取得して変数へ代入が可能。
# なお、"$*IN."を省略してlines()だけ書いても同じ意味になる。
# ポイント3:
# for構文の"->"はfat commaではなく、構文の一部である。
# ","に置き換えると文法エラーとなる。
# ポイント4:
# chomp、splitいずれも文字列(Str)のメソッドとしても呼び出し可能。
# これを利用し、Pythonと同様にメソッドチェーンにすることができる。
# ポイント5:
# 文字列の連結演算子が"."から"~"に変更されたことに伴い、
# 正規表現のマッチング演算子が"=~"から"~~"に変更された。
# ポイント6:
# 正規表現のパターンにおいて、メタキャラクタの^と$が、Perl 5の
# \Aと\zと同じ意味を持つようになった。従来の^と$を表したい場合は、
# それぞれ^^、$$を使う。
# ポイント7:
# 正規表現の修飾子(Modifiers)は、副詞(Adverbs)に取って代わられた。
# また、Perl 5のベストプラクティスの"xms"は、いずれもデフォルトで
# 有効になっている。