Perl コードの複数行を一気にコメントアウトする方法

Perl コードのコメントアウトの方法の解説です。

Perlでは、'#'(シャープ)から行末(\n)までがコメントとみなされ、本当のコメントの他、保留中のコードやコード修正時に使用することができます。

例1:コメントを付ける

#名前は6文字まで
length($name) > 6 and die '名前は6文字まで!';

例2:コードの修正

#chomp($val);
$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 の機能を利用してコメントアウトすると簡単です。

=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";