sironekotoroの日記

Perl で楽をしたい

すぐわかる オブジェクト指向 Perl 第6章 、第7章

第6章 ライブラリを取り込むrequire

なるほど

  • リストの要素である、数字の重複を排除する、というサブルーチン uniq
my @arr = ( 5, 4, 7, 4, 5, 7, 4, 3 );

sub uniq {
    my @in = @_;
    my %out = ();
    foreach my $in (@in) {
        $out{$in} = 1;
    }
    my @return = keys %out;
}

print uniq(@arr); #4375
  • 配列をハッシュの key にして、その値に固定値で1を入力する。
    • よくある
    • でも、プログラムを学ぶ前だと分からなかったと思う。
    • 準備された uniq 関数を使う事は出来ても、それを自分で実装できたかどうか・・・自信ない

「なんでもかまわない時は1」というのは Perl 仲間の間で、ゆるやかな合意として成立しているので、他の人がリストを読んだとき「ああ何でもかまわないから1を入れたんだな」とわかります

  • この「1」ってのは、モジュール作ったときに最後に入れる「1」と同じなんかな?
  • おいおい出てくるだろう

ライブラリ

次に arrUtil というライブラリを作っていきます。ここでライブラリ(library)とはサブルーチンを集めて色々なプログラムで呼び出せるようにするファイルの事です

  • ライブラリの説明って以外と無かった気がする。
    • もちろん、うちが覚えていないだけの可能性大

小ワザ

print join "\n" , @INC;
  • ライブラリがおいてあるフォルダを表示するものなんだけど、なるほど、join をこうやって使うのか、と。
    • うちだったら、配列だから foreach つかって〜・・・ってなってたと思う。迂遠
  • そして @INC の中に、 . があるから、カレントディレクトリ内のファイルもライブラリとして実行できるんね

第7章 名前空間を作るパッケージ

  • my で変数を宣言する、という事がその変数の呼び出せる範囲を規定する事、つまりオブジェクト指向における「カプセル化」を担う・・・
  • なるほどなぁ!何も考えずに、マナーとして my を使ってきたんだけど、なるほど。
  • だもんで、 our で宣言する変数の使い道?とかよく分かってなかった。
  • いやー、勉強になる!勉強してるんだから当然だけど、勉強になる!