Perlの勉強会 #Perl入学式in大阪 #2 をサポートしてきました

@nqounetです。

昨日は2014年度のPerl入学式in大阪の第2回でした。

サポート部隊として参加した感想を書いてみます。

全体的には好評

関東在住の校長も絶賛するほど好評です。

俺が言うのも何だが #Perl入学式in大阪 めっちゃいいな.
— papix (@papix) 2014, 7月 12

in東京、in福岡も好評のようで何よりです。

よくあるかもしれない間違い

今回は変数の扱いやif文など、プログラミングの基礎部分を学びました。

その中でPerl独特だなと思ったのは「elsif」です。

最近、JavaScriptをよく書いているせいもあってか、「elsif」がとても奇妙に見えてきました。

エラーで動かないんですけど、で見に行ったら「else if」になっていたりしました。

他の言語を学んでいると、こういう部分が「なんでだろ~?」って思うところかもしれません。

比較演算子あるある

Perlは、数値の比較演算子と文字列の比較演算子があります。

文字列を数値の比較演算子で評価すると、書いた本人にとっては想定外の実行結果になります。

今回の例では数当てゲームを作っていたのですが、文字を入力しても何故か動く、ということに戸惑っていたようです。

文字列を数値の比較演算子で比較すると、warningsが効いて警告が出るのですが、プログラム上は「0」の扱いで続けて実行されます。

こうした警告が出た場合でもエラーとして扱いたい場合は、warningsにオプションを付けてやる方法があります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';

my $args = 'hoge';

if ($args == 0) {
    print "$args is 0 !\n";
}
else {
    print "$args is not 0 !\n";
}

通常であれば、警告は出るもののhoge is 0 !という表示になりますが、FATAL => 'all'というオプションを付けることで警告がエラーと同じ扱いになります。

こうするとちょっとした警告も見逃さないようになりますので、慣れないうちはこのようにして警告を受けないようなプログラムを作成するようにすると良いと思います。

突然の成果発表会

勉強も休憩しながらとはいえ、4時間ともなると喋る方も大変です。

なので、最終問題は参加者に発表していただきました。

突然のムチャぶりでしたが、応えてくれたので(まあ、サポーターの知り合いですが)良かったです。

他の方はどう思ったのかはわかりませんが、ワタシ的には好評だったので、次回もやってみたらどうかなと思いました。

日本語問題やおまじない(お約束)

昨シーズンからは、お約束をシンプルにするためにuse utf8については書かないようにしていました。

しかしいずれは通る道なので、そのうち解説は必要だろうなぁと思います。

今回も、use utf8して日本語をprintすると警告がでる、という質問がありましたし…。

この辺は、ちゃんと説明をするのが大変なので、サポーターチームとしても悩みどころだなと思います。

解説のためには、Perlの内部文字列Encode::(en|de)code(_utf8)?についての説明が必要です。

過去に読んだ記事を少し読み返してみましたが、入門として解説するにはテクニカルすぎたり、あまり触れたくない情報(「utf8フラグ」のこと)に触れていたりして、なかなか入門向けとして適切なソースが見つかりませんでした。

それでも、読むとすればこの辺りが良いと思います。

もしかしたらつづく

まだ長くなりそうなのでつづきます。

たぶん。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。