fortune
30分シリーズ、その4。fortuneプログラム。
引数にfortune用のデータを与えるとそこから、適当なやつをピックアップする。
アブラハムの子であるダビデの子、イエス・キリストの系図。 -- マタイの福音書 1:1 % アブラハムはイサクの父であり、イサクはヤコブの父、ヤコブはユダとその兄弟たちとの父、 -- マタイの福音書 1:2 %
というファイルを用意すると、
$ perl fortune.pl bible アブラハムの子であるダビデの子、イエス・キリストの系図。 -- マタイの福音書 1:1
となる。
#!/usr/local/bin/env perl # -*- perl -*- use strict; my $i=0; my @fortune; while(<>){ chomp; if($_ eq '%'){ $i ++; }else{ $fortune[$i] .= $_."\n"; } } print $fortune[int(rand(@fortune))];
- ファイルの内容をまとめて読み込んで、splitしたい。でもやり方が分からないから一行づつ読み込んでいる
- リストコンテキストで読み取ると余計な分割が発生しそうで嫌
- 文字列比較は
eq
を使う。うっかり==
を使っていた - 副作用のないchompが欲しいかも