Hatena::Groupperl

Press::Alt_R

2010-08-02

Perlわかば (アルパカ 2.1.1 grep)

grep EXPR, LIST
grep BLOCK LIST

EXPR/BLOCKは、LISTからの要素を $_ で受ける。

# 桁の合計が奇数になる数字だけを取り出す

my @input_numbers = (3 4 6 12 15 21 24 100 311);
my @odd_digit_sum = grep{
  # 最終的に真偽値を返す処理
  my $input = $_;               # このブロックのLISTからの受け皿は $_ (サブルーチンとの違いに注意)
  my @digits = split //, $input # 数字を空の正規表現で分割=1文字ごとに分割
  my $sum;
  $sum += $_ for @digits;       # foreach my $keta(@digits){$sum += $keta;}
  $sum % 2;                     # 奇数→2による剰余は1→真、偶数→偽
} @input_numbers

Perlわかば (アルパカ本 2.1.1 リストのフィルタリング)

リストとgrep

grep BLOCK LIST
grep EXPR, LIST

BLOCK/EXPRが真になったもののみをリストにして返す

BLOCK: {}で囲まれたブロック。通常の文を書いていくことができる
EXPR : 式(演算子や関数など、1命令で実行できるもの)。

perldoc -f grep すればわかります。

TasnimTasnim 2014/05/06 18:16 Way to use the internet to help people solve prbmoels!

ゲスト



トラックバック - http://perl.g.hatena.ne.jp/altr/20100802