この前の土曜日、Perl入学式#2に行ってきました。
サポート担当ということで、Twitterのハッシュタグ「#Perl入学式」を監視したり、会場をウロウロしたり、会計っぽいことをやったりしました。

1では、Perlの環境構築をしたり、YAPC::Asiaの紹介をしたりして、Perlの世界を感じてもらう感じでしたが、今回からはいよいよ文法に入りました。

今回の講師役は@kiyotuneさんでした。
1週間ほど前に、私が主宰している新大阪コワーキングに来て、ほぼ1日缶詰状態でテキストを作っていました。
色々と話をしながら最終的にまとまったものは、ものすごいボリュームで、これを入門者向けに伝えるのは難しいなぁ、と、改めて入門者向け勉強会の難しさを感じました。
それと同時に、その大量なテキスト作成をしていただいたkiyotuneさんには大変な負担をかけたと思います。
本当にありがとうございました。


特に難しいのはお約束の部分。
use strict;とかuse warnings;は、とりあえず書いとけ、くらいでも良いと思いますが、説明をするとオプションも含めて大変なことになります。
軽く流しながら解説をしていましたが、かなり難しかったのではないかと思います。
やはり最初は、とりあえず書いとけ、で良かったのでしょうね。
それと「動かない」という説明をしていても、実際には動いてしまうことがあります。
スクリプトファイルの1行目(Shebang)の「#!」と実行プログラムパスの間にはスペースをスペースがあると動かない、と説明していたのですが、実際には半角スペースがあっても動いてしまうのです(私の環境でも動きました)。
また、「”(ダブルクォーテーション)」の中で改行を入れるとエラーになる、という説明もしていたのですが、実際には改行していても動いたりしてます(私の環境でも動きました)。
同じPerlでも、環境によって若干の動作の違いがあるので、そういう部分の説明も難しいと思いました。

1
2
3
4
5
#! /usr/bin/env perl
use strict;
use warnings;
print "Hello,
world!\n";

個人的には「自力で学習している時にわからないところ」を上手く伝えられたらなと思っています。
例えば、クォーテーションの種類。
「”(ダブルクォーテーション)」と「’(シングルクォーテーション)」の違いを説明した時に、ついでに「q」や「qq」によるクォーテーションもあることを説明しても良かったなと思いました。
検索でヒットしたコードには、おそらくこういう書き方をしていることがあると思います。
他にも、休憩時間に、複数行に渡ってコメントしたい時はどうするの?、ということを訊かれました。
なので、POD機能を使ったコメントを伝えてみました。
他言語の経験者は、既に知っている言語との比較で覚えるほうがわかりやすいと思いますので、この機能をPerlではどうやるの?、というような切り口も良いかもと思っています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#! /usr/bin/env perl
use strict;
use warnings;
use utf8;
=pod
# binmode STDOUT, ":encoding(utf8)";
binmode STDOUT, ":utf8";
my $greeting = "<一度目の挨拶>\n";
print $greeting;
ここはコメント
=cut
print "#print"; # コメント;
print qq{pr"int\n};
print q{pri"nt\n};
print qq/ds\n/;

また、配列とリストの違いについては、一応知っていたつもりでしたが、知らないこともあって勉強になりました(「ハッシュのキーにリストを渡す」ことが出来るのは知りませんでした。必要な時は事前にキーを作ってから渡していました)。

1
2
3
4
5
6
7
8
9
10
#! /usr/bin/env perl
use utf8;
use 5.12.1;
use Data::Dumper::Concise;
my %hash;
$hash{qw/1 2 3/} = 'hoge';
say $hash{qw/1 2 3/};
say Dumper \%hash;
my $var = scalar (2,4,6,8);
say $var;

最後に演習問題をやったのですが、その問題を解くのがなかなか面白かったですね。
実際の回答は、@papixさんがライブコーディングで実施したのですが、このやり方は面白いと思うので、続けていきたいですね。
まあ、問題を作るのは大変だと思いますが。
Perl入学式#2は収穫の多い勉強会になりました。
懇親会では、今回一緒にサポートをしてもらった@shiba_yu36さんや@hisaichi5518さんと意見交換をしたり、その場のノリでKyoto.pmで発表する事になったりしました。
Twitterでも何度もつぶやいていますが、今年の関西はPerlが熱いです。
個人的にはPerl入学式に深く関わったり、Kyoto.pmで発表することになったり、Kansai.pmのオフィシャルサイトの編集にも関わったりして、Perlコミュニティに少しでも貢献できているのを楽しんでいます。
そして、もっと関西をPerlで熱くしたいです。