2007年02月23日

スマートなPerlのススメ @ ウェブ

最近CGIの改造を依頼されて久々にPerlを書いているのですが、他人の書いたソースコードは良くも悪くも勉強になります。

Perlは人によって書き方が大きく違う事があるのですが、その中でも、ifとprintの使い方が、ソースの視認性に大きく影響します。

例えば、ループしている処理の中、ifで処理を分ける事は良くありますが、頻繁に見る書き方がこれ。

if($flag eq "1"){
...
}

文法的に間違いではないですし、悪くはないのですが、もっとスッキリ書けます。

next if($flag ne "1");

これだけ。余計なインデントが生じないし、非常にスッキリします。この書式は他の所でも使えるので、頻繁に出てくるprintに使えば、行数を少なくできてスッキリします。

if($flag eq "1"){
print "hogehoge";
}

だとしたら、書き換えると

print "hogehoge" if($flag eq "1");

こんな感じ。

後ろに条件が来るので見慣れないと、戸惑うかも知れませんが、行数や文字数を減らせるので、Perlの様なスクリプトには色々な意味で有利です。

更に書き方のことですが、printでHTMLを出力する場合、

print "<html>\n<body>\n</body>\n</html>\n";

なんて書く事になると思いますが、これでは余計な文字が入って視認性が悪いです。で、これ。

print <<"__HTML__";
<html>
<body>
</body>
</html>
__HTML__

行数が増えてしまいますが、こちらの方が何かと便利。HTMLエディタなどのソースをそのままコピーペーストできます。

本当は見た目とプログラムのロジックは分離した方が良いんですけどね。HTMLテンプレートみたいなモノを作ってそれをCGIで読み込んで処理して表示。と言った感じ。自分が最初から作る場合はDreamweaverでテンプレートを作って、それをCGIで使えるように作ります。

そう言えば、

if($flag eq "1"){print "hogehoge"};

とか、

if($flag eq "1"){
print "hogehoge"
};

こんな書き方をしているのを見たのですが、これってなに?これでも動くけどさぁ。気持ち悪いです。「{」と「}」は要らないでしょ。

閲覧数: 2756 / はてなブックマークusers

関連商品

amazon.co.jp・詳細ページへ

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

Mac

Shade

3D

Flash

ゲーム

ウェブ

音楽

映画

デジカメ

Windows

Linux

携帯電話

テレビ

広島

電子工作

iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト