if ( 1 ){
$value = '*****'; # タブでインデントしている
}
if ( 1 ){ $flg = 1 }
$result2 = $p + 1000 / 2;
%hash = (
A, 1000,
B, 1001,
C, 1002,
D, 1003
);
open( FH, "<$text");
while( <FH> ){
print $_;
}
close( FH );
if ( $value1 eq 'MEN' ) {
print "good by!\n";
} else {
print "welcom!\n";
}
sub display_msg {
( $value1, $value2 ) = @_;
if ( $value1 / 10000000 + 2000000000 >
$value2 / 10000000 + 2000000000 ){
return 0;
}
return 1;
}
sub function{
my $a = 10;
my $b = 20;
my ($word, $cnt);
....
}
常にプログラムを-wフラグを指定して実行しましょう。 もし必要なら、$^W変数を使って、プログラムの特定の部分について、 警告をオフにすることができます。また、常に use strictを指定するようにしましょう。
#! /usr/local/bin/perl -w
use strict;
.....
プログラミングの最中に、同じような処理を行う箇所に気づくことがあります。 このようなときは、サブルーチンにして切り出すか、 モジュール化を考慮する習慣をつけましょう。
コメントを適切に書いておくことは重要です。
コメントを入れる場所としては、プログラムの先頭、サブルーチンの前、
複雑な処理の前がよいでしょう。
ただし、コメント文は多すぎないように気を付けましょう。
コメント文がなくても、すぐに処理内容がわかるようなコーディングを心がけるべきです。
Perl
は自由度が高い言語ですから、同じ処理をするにも様々な書き方があります。
どの方法で処理するかは、もっとも読みやすいものを選ぶとよいでしょう。
また、デフォルトの値や省略可能なカッコや記述が様々に用意されていますが、
最初はなるべく使わないようにしましょう。
プログラム作成時は問題なくても、後で修正するときに処理の内容がわからない、
といったことがあります。
ループラベルの使用はあまり推奨されていません。 ですが、ループラベルが必要な場合は、使ってもかまわないでしょう。 多重のループからの脱出するためでもありますが、読みやすくなります。 結局のところ、ループラベルを使うか、使わないかは好みの問題です。
複雑な正規表現には、x 修飾子を使って、スペースを入れるなどして、なるべく見やすくしましょう。 正規表現の中にスラッシュやバックスラッシュを使っている時は、 区切文字はスラッシュ以外にし、頻繁なエスケープ処理を避けましょう。
# 少し読みにくいですね
$value =~ /\/home\/httpd\/html\/*\.html/;
# 上記と同様の処理ですが、区切り文字を | にして、エスケープ
# 処理を避けています
$value =~ m|/home/httpd/html/*\.html/;
論理演算子の && や || といった記号的な演算子よりも、 直感的にわかりやすい "and" や "or" を使いましょう。
連続した print() 文がある場合は、変わりにヒアドキュメントを使いましょう。
# 連続した print 文
print "<html>\n";
print "<body>\n";
print "You might win some but you just lost one\n";
print "</body>\n";
print "</html>\n";
# 上記と同様の処理ですが、ヒアドキュメントを使っています
print <<EOF;
<html>
<body>
You might win some but you just lost one
</body>
<html>
EOF
クォートを含む文字列をクォートで囲むためには、 バックスラッシュ( / )でエスケープする必要があります。 このような場合は、q//、qq//、qx//を代わりに使うようにしましょう。
# 同様の処理ですが、qq//を使ったほうが見た目がいいですね
$word = "Look at your career they said,\"Baby use your
head\"";
$word = qq{Look at your career they said,"Baby use your
head"};
ほとんどのコンピュータでは、浮動小数点は近似値になります。
たとえば、10を3で割ると「3.3333...」と無限に続きますが、
コンピュータは値を保存する領域に制限があるので、
途中で3の繰り返しをストップさせます。
末桁まで正確であることを前提にしてプログラミングを行うと、
致命的な問題に直面します。金額などを扱う場合などは、特に注意しましょう。
システムコールとバッククォーテーション操作の戻り値は、 なるべくチェックするようにしましょう。
移植性のため、すべてのマシンで利用できない機能を使う場合には、 eval の中で使ったほうが安全です。
再利用性を考えましょう。何も考えずに作成するほうが簡単ですが、 あとで簡単に再利用できるように作成しておいたほうが、 長い目で見て作業が楽になります。
if ( $a ){
$value = $a;
} elsif ( $b ){
$value = $b;
} elsif ( $c ){
$value = $c;
}