Akihiro's Programmer Blog

Technology Notes for Personal

「初めてのPerl」 第十七章

第十七章から。

「初めてのPerl」は今回で終了。


第十七章 上級テクニック

内容


用語集

用語 説明
リャマ本 「初めてのPerl」。入門に是非。
アルパカ本 「続・初めてのPerl」。次はこの本。
ビクーニャ 「マスタリングPerl」。慣れたらこの本。


Point

配列スライスとハッシュスライス
# 配列から特定要素を一気に取得するのに、配列スライスが便利
my @all_numbers = qw/ zero one two three four five /;

# これで @numbers には zero, two, five が入る
my @numbers = @all_numbers[0, 2, -1];


# ハッシュにもハッシュスライスと呼ばれる記法が存在する
my %all_numbers = (
    zero  => 0,
    one   => 1,
    two   => 2,
    three => 3,
    four  => 4,
    five  => 5,
);

# これで @numbers には 0, 2, 5 が入る
my @numbers = @all_numbers{qw/ zero two five/};


例外処理
# 例外が発生するであろうコードをevalで囲むことで例外処理を行う
my $result = eval{ 10 / 0 };    # 0で割っちゃった

# この場合、$resultには undef が入り、特殊変数 $@ にエラーメッセージが入る


# ただ、CPAN には Try::Tiny という try/catch構文が使えるモジュールがある
# 基本はそっちを使っておけばとりあえずOK


grep演算子とmap演算子
# grep演算子を使えば、リストから条件に合う要素を抽出できる
my @result = grep { $_ % 2 } 1..1000;

# これで1から1000のリストから偶数のみが抽出されてる


# map演算子は、リストの要素を変換することが出来る
my @result = map { $_ * 2 } 1..1000;

# これで1から1000のリストの要素を2倍した結果が得られる


リストユーティリティ
# リスト処理に便利なモジュールが標準で付いている
use List::Util;

# 色んなリスト処理が出来るようになる
use List::Util qw/sum max shuffle/;
my $sum = sum( 1..1000 );

my $max = max( 1, 5, 9, 2, 7 );

my @shuffled = shuffle( 1..1000 );


# さらなるリスト処理を求めるなら CPAN には List::MoreUtils というモジュールがある