Hokkaido.pm Casual#4に行ってきました

今回は、pm巡業中の__papix__さんを迎えての開催となりました。
猛暑の中、お集まり頂きありがとうございました。
次回は、9/19を予定しておりますので、よろしくお願いします。

今回のテーマは、「モジュールを作ろう!」と言うことで、
書き捨てスクリプトから一歩進んだ結果、内容が難し過ぎないか心配でした。
聞き慣れないキーワードだったり、いわゆるおまじない(*1)だったり、
初心者向けにどうやって仕上げるのが良いか、結構悩みました。

結果的に、”package”, “Exporter”, “use”, “require”が出てきて、
“use”と”require”どっちを使うといいの?っていう話を、
aloelightさんがライブコーディングを交えてカジュアルに説明してくれたので、
すごく感謝しております。
という訳で、今回のカジュアルだったで賞はaloelightさんに送りたいと思います。

その他にも、関数の戻り値で0を返すけどdieしたくない場合は?という質問があって、
aloelightさんが、defined-or演算子(//)が使えること紹介してくれました。
いつから使えるようになったんだっけ?という質問には、
akiymさんが5.10からとカジュアルに即答する一面も。

use strict;
use warnings;

use feature qw( say );

sub func {
    return 0;
}

# dieされる
eval {
    func() or die 'error message.';
    say 'line = ' . __LINE__;
};

if ( $@ ) {
    warn 'catch: ' . $@; # catch: error message.
}

# dieされない
eval {
    func() // die 'error message.';
    say 'line = ' . __LINE__;
};

if ( $@ ) {
    warn 'catch: ' . $@; # catch: error message.
}

# 出力結果
# catch: error message. at hhh.pl line 12.
# line = 23

ちなみに、今回発表に使ったスライドはこちら
packageについて説明しました。

おしまい。

(*1) モジュールファイルの最後で真を返す必要がある

Leave a Comment