結城本の勉強(その7)

  • 第10章 サブルーチン
    • &print_xyが呼び出された時点での$x,$yの値を、このサブルーチン内だけで使われる変数に代入している(@_って...)
    • サブルーチンの定義はファイル内のどこにあっても構わない(ふーん)
    • サブルーチンの名前にはアンダースコアも使える
    • @_は配列。サブルーチンに渡された引数が入る。その要素は$_[0]、$_[1]で表す(ほーー)
    • 通常Perlでは変数を定義せずに使い始めることができますが...(え、my必要だよね。あ、変数宣言という意味か。use strict;を書くとエラーとなる)
    • スカラーコンテキストとリストコンテキスト(また出てきた)
    • デバッグプリント。変数$debugの利用。if ($debug) { ... }
    • my (@number) = @_; で引数の列を求めて、@numberをスカラーコンテキストで評価すれば引数の個数が得られる
    • my(@number, @name) = @_; は誤り
    • returnはなくてもよい。最後に評価された値が戻り値となる(へー)
    • 三項演算子が使える(ほーー)
    • 平均を表示するとき、print ($x+$y) /2; と書いてはいけない
    • 関数shiftを使うと配列の要素を抜き出せる。my $x = shift @_; (すばらしい!)
    • 「車輪を再発明するな」
    • モジュールファイルの拡張子は.pm

"requireでファイルを取り込む”まで。一時中断。

    • @INCはrequireがファイルを探しにいくディレクトリの一覧を保持
    • use strict; と書くと変数を使う前に変数の宣言をしなければエラーになる
    • 変数の宣言は、use vars qw( );でできる(myでいいじゃん...)
    • @ARGV(いきなりでてきたな)
    • ’’はq//と書け、””はqq//と書ける(えっ!)
    • サブルーチンの中で変数にmyをつけるとスコープがサブルーチン内に制限される
    • myとスコープ(このブロック{}はなんぞや。スコープを制限するだけのため?)
    • サブルーチン名にハイフンは使えない
    • my ($x) = @_;とすると、最初の要素$_[0]が$xに代入される
    • my $x = @_;とすると、要素数が代入される(むーー)

第10章は終わり。

  • 第11章 ファイル操作
    • A or Bは、Aが偽のときに限りBを実行する
    • 関数openは成功すると、真の値を返す。失敗するとundefを返す
    • 最後の行までファイルを読むと式my $line=は偽になる(ふーん)
    • $!は、dieを実行するときに表示されるエラーメッセージを示す

PM8:35一時中断。