Perl コードのコメントアウトの方法の解説です。
Perlでは、'#'(シャープ)から行末(\n)までがコメントとみなされ、本当のコメントの他、保留中のコードやコード修正時に使用することができます。
例1:コメントを付ける
length($name) > 6 and die '名前は6文字まで!';
例2:コードの修正
$val =~ s/\s+$//;
複数行のコメントアウト /* ~ */ に代わるもの
では、JavaScript だとか Cだとか(Cはよく知りませんが…)にある、複数行のコメントを書くにはどうしたらよいでしょうか?
例えば、以下の様に書きたい場合、
関数 mysql_connect
引数: username, passwd
戻り値: データベースハンドラ
*/
perl の場合は、普通はこんな感じになりますね。
## 関数 mysql_connect
## 引数: username, passwd
## 戻り値: データベースハンドラ
#########################
これはこれで見やすいですが、では、こんなのはどうでしょうか?
テスト用環境変数
var mail = 'hoge@mydomain.com';
var smtp = 'localhost';
*/
//本番用
var mail = 'blabla@mydomain.com';
var smtp = '123.123.123.123';
これも、普通は以下の感じに書きます。
#my $mail = 'hoge@mydomain.com';
#my $smtp = 'localhost';
#本番用
my $mail = 'blabla@mydomain.com';
my $smtp = '123.123.123.123';
この場合、上記の様に変更すべき変数が2つならよいですが、10近くあると、かなり面倒です。
こんな時は、perl の POD の機能を利用してコメントアウトすると簡単です。
#テスト用環境変数
my $mail = 'hoge@mydomain.com';
my $smtp = 'localhost';
=cut
#本番用
my $mail = 'blabla@mydomain.com';
my $smtp = '123.123.123.123';
このように書くと、「=pod」行と「=cut」行の間は、コードとしては扱われません。
本来はドキュメントを書いたり整形したりするための機能ですが、コメントアウトの変わりに使用できます。
本番環境とテスト環境を切り替える場合は、上記2行の位置を変更します。
環境変数の変更を上記のように書くと、 diff + patch で変更を本番環境にリリースする場合にもとても楽で、大変お勧めです。
その他、本番用に変更しなければならない変数が少ないのであれば、開発用環境変数をコメントアウトしない方法もありますね。処理効率の点では劣るので、若干気持ち悪いですが。
my $mail = 'hoge@mydomain.com';
my $smtp = 'localhost';
=pod
#本番環境だけ、「=cut」をこのすぐ下の行に持って来る。
$smtp = '123.123.123.123';
=cut
__END__ を利用してプログラムファイル内にメモを書く
コードの位置を気にしないならば、「__END__」(「END」の前後にアンダースコア2つずつ)キーワードの後は、コードとして扱われないので、ここに何か書くこともできます。
print 'blabla';
__END__
Todo
・Stop blabla
・Be a quiet person
Change Log
2004/06/24 Release
サンプル
以下のコードは、「3(改行)」を出力します。
#!/usr/bin/perl -w
print __LINE__,"\n";
=pod
print __LINE__,"\n";
=cut
__END__
print __LINE__,"\n";