【プログラミング勉強会】第二回Perl入学式に参加しました【札幌】

【プログラミング勉強会】第二回Perl入学式に参加しました【札幌】

  • Perl入学式

Perl入学式 in札幌に参加してきました。今回は第二回目です。自分への防備録を兼ねて感想等を書きます。

授業内容

今回の授業内容はPerlの基本文法でした。

内容

  • 前回の復習
  • おまじない
  • 変数
  • 標準入力
  • 四則演算
  • 基本的な演算子
  • if, else文
  • 論理演算子
  • for文, 配列

講義の資料はgit上にありますので、興味ある方はこちらをご覧ください。
講義資料

気になった点

おまじない

Perlは自由な言語だそうです。それに少し制約をつけるように以下のおまじないを書きます。

#!/usr/bin/env perl
use strict;
use warnings;

コードの意味は、あまりふざけた書き方をすると警告しますよというものです。
このuse strict;はJavaScriptにも似たようなものがあるので、なんとなくわかるのですが、一行目のやつはなんだろうと思いました。
調べて見てると、shebangというものだそうです。
これによって起動するインタプリタを指定出来るそうです。このインタプリタを使って、perlをコンパイルしてしてくださいね、と指定しているそうです。envの中身を見てみましたが、機械語で書かれていたので2秒でファイルを閉じました。

変数

perlの変数のは三種類あります。

  • スカラ変数
  • 配列
  • ハッシュ

Perlではひとつのデータだけを入れるものをスカラ変数といいます。スカラとはなんぞや。まぁ普通の変数だと思って今はそのまま進みます。
講義資料から以下のコードを持ってきました。

my $foo;        # スカラ変数 $foo を宣言
$foo = 1;       # $foo に整数 1 を代入
my $bar = 3.14; # $bar を宣言し実数 3.14 を代入
$bar = "baz";   # $bar に文字列 baz を代入

変数を宣言するときは、あたまにmyを書きます。そして変数の前に$をつけます。myってなんだよ。$書くならいらないんじゃないの、そういうのと思いつつ、ここもこのまま進みます。最初は違和感がありましたが、1時間も書けば慣れました。

標準入力

標準入力を受けるときは以下のように書きます。このコードも資料から引っ張ってきました。

my $str = <STDIN>;
chomp $str;
print $str;

僕は最近javaを書いているので、この簡単さには感動しました。javaだと冗長なコードをかかないといけないのですが、perlだと一発でOK。なんて楽なんだ。perlちょっと好きになってきたよ。

for文

自分の中では以下のようなfor文の書き方がスタンダードだと思っていました。でもperlではこういう書き方はほとんどしないそうです。これには驚きました。
僕はC言語を触ったことはないのですが、これはC言語に由来する書き方だそうです。

my @array = ( 1, "foo", 3 );
for ( my $i = 0; $i < scalar(@array); $i++ ) {
  print "$array[$i]\n";
}

Perlでは以下の書き方にしましょう。

my @array = ( 1, "foo", 3 );
for my $foo ( @array ) {
  print "$foo\n";
}

今日習ったことのまとめ問題としてfizzbuzzというものをやりました。
1から100までの数字を以下の条件に従って出力する。

  • その数字が3で割り切れるならFizz
  • 5で割り切れるならBuzz
  • 3でも5でも割り切れるならFizzBuzz

僕はこんなコードを書きました。


my @hun = (1..100);
 for my $i(@hun){
   if ($i % 3 == 0 && $i % 5 == 0){
     print "$i: fizzbuzz\n";
   }elsif($i % 3 == 0){
     print "$i: fizz\n";
   }elsif($i % 5 == 0){
     print "$i: buzz\n";
   }
 }

まず1から100をループで出力するところを書きました。
次に条件をひとつひとつ書いて、試しました。
それで以下のコードを書きました。
すると、うまく動作しない。3でも5でも割り切れる数字でもfizzbuzzが出ない。
どこが悪いのか探すと、($i % 3 == 0 && $i % 5 == 0)の条件を書く場所が間違っている。
3でも割りきれて、5でも割り切れる数字の判断を先にしないといけない。


my @hun = (1..100);
 for my $i(@hun){
   if ($i % 3 == 0){
     print "$i: fizz\n";
   }elsif($i % 5 == 0){
     print "$i: buzz\n";
   }elsif($i % 3 == 0 && $i % 5 == 0){
     print "$i: fizzbuzz\n";
   }
 }

ちょっと大変だったけど、なんとかできた!!

感想

perl勉強会は雰囲気もよくて楽しいです。ちょっと寝不足で疲れていたけど参加できてよかった。プログラミングの勉強だけではなく、周りの人との交流もできるので素晴らしい場だと思いました。
前回は予定が合って参加できなかったのですが、今回は懇親会にも行きました。IT業界だけでなく、他業種の方たちとも話ができて面白かったです。
懇親会で他の参加者の方にブログを読んでます、と言われて驚きました。僕のブログはFacebookとフォロワーのほとんどいないTwitterでシェアしているだけなので、読んでいる人はほとんど自分の知り合いだけだと思っていました。こういうのはとてもモチベーションがあがります。発信すればどこかに届くんだと思いました。ページの表示回数の統計の先に、読者がいるという事実をもっと意識すべきだと思いました。
次回のperl入学式にも是非参加したいです。これを読んで、興味の湧いた人は途中からでも参加できるので、一緒に参加しましょう。もしなにか質問等あれば、下のコメント欄、あるいはtwitterでご連絡ください。
最後になりますが、主催、サポートしてくれた方々に感謝します。ありがとうございました!!また次回お会い致しましょう!!

 

Twitter:(@keigxgiek)

Perl入学式公式サイト

参加予約はこちらから

コメントを残す

― Sponsered ―