Perl入学式#5に行ってきた

復習がてらのエントリー。相変わらず配列 @array の要素にアクセスする時に @array[0]とか書いてシンタックスエラーになる。当分慣れそうもない。

1. コマンドライン引数の話

@ARGV という配列でアクセスできるよ。と。スクリプト名自身は ARGV に含まれないので別途 $0 なり __FILE__ なりで参照する必要がある。2つの違いを聞くのを忘れた。

2. ファイル入出力の話

open でファイルハンドラ $fh を作成して @lines = <$fh> とかすると勝手に全行が配列となって @lines に入ってしまう。 の時は $line = とかしていたので1行ずつ入力できたのだろう。

その他、日本語ファイルが文字化けしてしまう問題について指摘があったが、時間切れでどうすれば回避できるのか聞けなかった。ググッてみると

open my $fh, "<:utf8", "file.txt";

とかするらしい。よくわからん。
その他、open の失敗を or die とかイチイチ書くのが面倒な人は use autodie とか使うといいらしい。

3. ファイルの状態の話

たぶんシェルスクリプトなどで使う test 関数と同じような感じ。細かく比較してない。

4. コマンド実行の話

system("ls") とかで外部コマンドを実行する話、バッククォートでその結果を文字列として受け取れる。この辺も日本語が化ける。

  decode 'utf8', qx{command};

とかすればいいんか?よくわからん。
こちらもコマンドの実行が成功したか、失敗したか IO::CaptureOutput などのモジュールを使うといいらしい。

5. 関数の話

...時間切れ

全体的な感想

あんのじょう、復習がどんどん長くなってる。俺も1ヶ月経つと前回やった内容を忘れてしまう。
Perl は書き方がいろいろあってWebの情報が古くなってるものも多いので、都度質問できるこのような勉強会は非常にためになる。