すぐわかる オブジェクト指向 Perl 第1章 いきなりモジュールを使ってみる
いよいよPerlでオブジェクト指向
第1章 いきなりモジュールを使ってみる
use File::Find; find( \&fileproc, '.' ); sub fileproc { print "$File::Find::name\n"; }
この、わずか5行のプログラムから疑問を見つけ、掘り起こし、それを後の章で解説するという構成みたい
そして1章の後にあるコラムにうちの持ってる心配・疑問に関しての答えそのものがのっててビックリするなど。
- 原価 + 消費税分 の元はこのコラムだけでとれた。
- 知らない事があっても別に平気!
Perlマスターブック Perl5.6/5.8対応
今の自分にちょうど良い
思いがけぬ残業で荒んだ気持ちで帰る途中、bookoffで見つけたのがこの本
Windows 環境からのインストール、変数、制御構造、サブルーチンなど一通り
- さらにオブジェクト指向にも一章を割くなど
- 初心者本からオブジェクト指向Perl本へ行こうとしていた自分にはちょうど良い
- しかし、今日の夜にも次のPerl本がくるので駆け足で攻略!
かけあし
- Chapter1: Windows版ActivePerlのインストール
- Chapter2: スカラー変数、リテラル
- Chapter3: 演算子、優先順位と結合法則
- Chapter4: 配列と連想配列
- ここでふと「配列のスライス」について以下の実験をするなど
my @array = ('a'..'z'); # abcdefghijklmnopqrstuvwxyz say @array[1,4]; # be my @temp = (1,4); say @array[@temp]; # be
- うむ、つまり、配列のスライスに配列がとれる(という言い方で良いのかな?)
あと、連想配列のスライスをもっと自分のスクリプトで使ってみたいんだけど・・・使う事が出来るところはいっぱいありそうなのだけど
Chapter5: 制御構造
- continue文ってどういう利用シーンがあるんだろ・・・想定できん・・・
Chapter6: リファレンス
- ハードリファレンスって言い方は初めて見たかも
- 無名配列、無名連想配列・・・かつては???だった
- 配列としての名前はない(無名)けど、リファレンス名はある、と理解
- Chapter7: ファイル操作、文字列操作、日付関数
- Chapter8: サブルーチン、モジュール
- Chapter9: 正規表現
- Chapter10: 変数のスコープとシンボルテーブル
- 型グロブ: 同じ名前を持つデータ構造を管理する形式
- なるほど!
- 型グロブ: 同じ名前を持つデータ構造を管理する形式
- Chapter11: サブルーチン
- Chapter12: パッケージとモジュール
- Chapter13: オブジェクト
かんたんPerl 第12章 モジュール入門/フォルダー処理、CGI
かんたんPerl 第11章 正規表現
おなじみ正規表現
- とはいえ、全くしらなかったのがこれ
use 5.012; use warnings; use utf8; binmode STDOUT, ':encoding(UTF-8)'; while(<DATA>){ chomp; say $_ if /\d/; } __DATA__ 1 2 3 0 #全角のゼロ
かんたんPerl 第8章 自作関数サブルーチン
ダイクストラ法!
- 情報処理試験頻出の「ダイクストラ法」のダイクストラって、人名だったんね
順次処理、分岐処理、反復処理
(中略) この3つに、サブルーチンというものを加えて、制御構造をきれいに考える事を、1960年代の後半にエドガー ダイクストラと言う人などが提唱したのが構造化プログラミング(structured program)です。 - ほう!
- エドガー・ダイクストラ - Wikipedia
(Edsger Wybe Dijkstra, 1930年5月11日 - 2002年8月6日)は、オランダ人の計算機科学者。1972年、プログラミング言語の基礎研究への貢献に対してチューリング賞を受賞。構造化プログラミングの提唱者。
適切な機能の切り出し方
- サブルーチンについてはだいたい分かるのだけど、自作スクリプトにおける「適切な機能の切り出し方」ってのがイマイチで
- 細かすぎても、おおざっぱすぎてもダメで、そういうあたりがプログラミングのセンスってやつなのかなぁと思ったり。
かんたんPerl 第6章 、第7章
かんたんPerl 第6章 枝分かれのifと真偽
いきなり首を縦に振りまくる事が書いてある
- 200%同意する。
プログラミングは作業を自動化して人間を楽にするだけでなく、人間がやっていた仕事は実はどういう作業なのかを、分析して明らかにします。
本当にその通りで、プログラミング学んでからは「仕事の無駄」とか、「業務フローの条件分岐」から外れようとする動きとか、敏感になった気がする。
モノを作り上げるため・楽をするため・あこがれから始めたプログラミングだったけど、これは本当に予期しなかった良い副作用。
閏年なら死ね!
- (もしかして) レベル4デス ?
- 条件分岐の定番は閏年判定だけど、「3のときだけアホになる」芸も定番だよなー
かんたんPerl 第7章 繰り返しと脱出
- while で無限ループしてしまって強制停止を繰り返すマン登場!
- お気に入りの制御構造は foreach です。無限ループしないから。
なるほど
- 文字列検索の index で対象の文字があるかどうか、あれば何文字目か?で数字が返れば真、でsayが実行される、と。なるほど
- うちだったら正規表現で /r/ とか書いてたけど、 index 使うのもシンプルで良いな。
- というか、 index あまり使った事ない。
use strict; use warnings; use 5.010; say "牡蠣の食べごろは"; my @month = qw /January February March April May June July August September October November December/; foreach my $month (@month) { if ( index( $month, "r" ) > 0 ) { say $month; } }
かんたんPerl 第5章 ハッシュとは何か
ぐだぐだ
- メインで利用している Sublime Text2 から Terminal を呼び出せなくなっており、その設定をやり直したり何なりで午前中を費やす
- そして直らない
- うちは Perl の勉強がしたいのに、エディタの設定に振り回されている事に腹が立つー
ハッシュ
- 何年前だろう、ハッシュの概念分からなくて、「別になくてもいいもーん」などと思ってた事を思い出す
- 今となっては当時の自分が信じられない
ハッシュスライス
配列のスライスは前回やったけど、ハッシュスライスって今までの初心者本にあったっけか・・・?
- もちろん、自分が忘れているだけの可能性大いにあり
なるほど、配列のスライスは添字でとってくるけど、ハッシュスライスはキーでとってくると。
- そして、ハッシュスライスは配列になるので、 % が @ になる、と。
- 納得感ある
- なお、以下のスクリプト、テキストでは「小の月」のハッシュスライスに December (12月)が入っているので、 November に直してある。
# month_hash3.pl -- 小の月をリスト出力する(ハッシュスライス使用) use strict; use warnings; use 5.010; my $name = shift; my %month = ( "January" => 1, "February" => 2, "March" => 3, "April" => 4, "May" => 5, "June" => 6, "July" => 7, "August" => 8, "September" => 9, "October" => 10, "November" => 11, "December" => 12, ); my @shotr_month = @month{"February" , "April" , "June" , "September" , "November"}; say "小の月: @shotr_month" # 小の月: 2 4 6 9 11
ハッシュエントリの削除にdelete
- 使った事なかった・・・なるほど。