perl関係の覚え書き
戻る
最終更新日 2002/08/31
2002/08/05
ファイルを読み込む
open(REC,"file.dat");
@data_rec = <REC>; # ← $data_recに配列として格納
close(REC);
if (!@data_rec) {
print "データがありません";
} else {
for ($ix = 0 ; $ix < @data_rec ; $ix++) {
chop($data_rec[$ix]); # ← 最後の文字(\n)を削除
print $data_rec[$ix]."<br>";
}
}
サブルーチンを使う1
sub sub_proc{
print "Aloha";
}
&sub_proc;
日付のフォーマット
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
@wday_t = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat") ; # 曜日のテーブル
@mon_t = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); # 月のテーブル
$year += 1900 ;
$now_date = sprintf "%s, %2d %s %d %02d:%02d:%02d +0900" ,$wday_t[$wday],$mday,$mon_t[$mon],$year,$hour,$min,$sec ;
こうなる → Sat, 31 Aug 2002 11:48:31 +0900
条件分岐 if else
条件分岐における陥りやすい間違い、またはなんでそーなるの?
perlは独特のプログラム言語である。特にC、COBOL等のプログラマーにとって若干難解な部分も多々有る。
しかし、プログラム言語である以上、条件分岐、繰り返しなど構文的に同じ様な命令もある。
ここで問題となるのが"同じ"ではなく"同じ様な"である。
はっきりいってperlは素直さに欠ける。
perlを開発した人物は何か人に言えない悩みがあったか、または単なる変人か。
普通、プログラマーたるもの条件分岐で if文を記述する場合は
if (条件1) {
ほげほげ
} elseif (条件2) {
ふがふが
} else {
ほげふが
}
とする。
あたりまえである。
多くのプログラム言語はこんな感じである。
ところがperlでは
if (条件1) {
ほげほげ
} elsif (条件2) {
ふがふが
} else {
ほげふが
}
となる
どこが違うか?
間違い探し状態である。
タイプミスではない。
perlの場合、elseifではなくelsifである
"elseif"の"else"の"e""は必要ない。
"elsif"である。
"elsif"である。
perlのどあほ
なんでそうなる