@nqounetです。

この前の日曜日(5月27日)はPerl入学式#5でした。

主な内容としては、

  • 前回までのおさらい
  • コマンドラインからスクリプトを使おう
  • ファイルを使おう
  • 外部コマンド(シェル)を使おう
  • 関数(サブルーチン)を使おう

でした。

予定では「@$について」と「コンテキスト」についても実施する予定だったのですが、時間の都合で次回(#6)になります。

資料について

資料はgithubで公開しています。

今回も、資料作成にあたっては、Learn Perl in about 2 hours 30 minutes、というページを参考にしました。

また、資料はMarkdownで記述し、markdown2impressを改造したツールを使ってプレゼン資料にしました。 そのあたりは先日書きましたので、そちらもご覧ください。

今回の反省点について

反省点としては、(またしても)時間配分がかなり適当だったことです。 というよりも、後半の時間の過ぎ方は異常です。脳内ではまだ30分ほどあるような気がしていたのですが…。 自分でもショックです。

おさらいについてはほぼ予定通りのつもりでしたが、説明(特にデリファレンス)の時点で迷いが出てしまったのも原因の1つかなと思います。

Dumperのおかげで、リファレンス自体は説明がしやすいのですが、デリファレンスがややこしいですね。 それと、$@%の使い分けですね。

デリファレンスする際には、スカラーなら${…}で、配列全体なら@{…}で、ハッシュ全体なら%{…}でリファレンスを囲ってやることでデリファレンスできる、というふうに説明しています。

1
${$scalar_ref}<br>@{$array_ref}<br>%{$hash_ref}<br>

しかし、例えばハッシュの中の1要素を$hash{key1}というように表現することが腑に落ちていない状態では、例えば

1
# 良くない例<br>@{$array_ref}[0]<br>%{$hash_ref}{key1}<br>

というようにやってしまいがちです。

そのようなことがあると思ったので、逆に->(矢印演算子)を使ったデリファレンスを中心にしてみたのです。

1
$array_ref->[0];   # ${$array_ref}[0] と同じ<br>$hash_ref->{key1}; # ${$hash_ref}{key1} と同じ<br>

それと、個人的には矢印演算子を使う方がわかり易かったので、こちらを推していきたいと思ったのもあります。

今回は、おさらいを問題と解答例とすることで、単なる説明ではなく、少しでも「思い出す」または「考える」時間を作りたいと思っていました。

目論見がうまく行ったかどうかはよくわかりませんが、実際にやってみると資料の細かい部分も見てくれている事はよくわかりました。 資料の作りこみは大事ですね。

#6は今のところ7月1日(日)の方向で調整しています。 次回の講師はpapixさんの予定です。 お楽しみに。