結城本の勉強(その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一時中断。