実録コンピュータ物語

趣味で使っているコンピュータ&アプリの情報を発信するブログです。

Perl 6を語る(第1回)コメントとアンスペース

f:id:bosh:20150308150430p:plain

2015年のクリスマスにPerl 6のバージョン1.0がリリースされるということで、少しずつ情報を整理していきたいと思います。

第1回はPerl 6のコメントとアンスペース(Unspaces)について取り上げます。(コメントから説明するのは、Perl 6の言語仕様で最初の方にあるからです)

単行コメント

コメントは#で始まり、行の終わりまで続きます。コメントはプログラムの動作には影響を与えません。これはPerl 5や他のプログラミング言語とまったく同じです。

# これはコメント行です。内容は無視されます

say "Hello Perl 6"; # Hello Perl 6と出力する

複数行コメント

PODの=beginセクション使って複数行コメントが可能です。Perl 5と違い、最後に=cutを書く必要はありません。

=begin comment

これはコメントです。
内容は無視されます

=end comment

say "Hello Perl 6";

埋め込みコメント

Perl 6では埋め込みコメント(インラインコメント)も使うことができます。埋め込みコメントは#`で始まり、後ろに任意の括弧文字が続きます。

#`(
    これは埋め込みコメントです。
    内容は無視されます
)

say #`(これもコメント) "Hello Perl 6";

#`の後に続く文字はユニコードで定義されている括弧ならなんでも使えます。

#`『
    これは埋め込みコメントです。
    内容は無視されます
    ユニコードで使える括弧文字なら何でもOK
    () [] <> {} 「」“” 《》【】
』

say "Hello Perl 6";

括弧は複数重ねることができます。括弧を閉じる時も同じ個数にする必要があります。

#`{{
    括弧を重ねる
    } ←括弧が1個しかないので、これはコメント終了とは見なされない
}}

#`「『
   「括弧の種類が別でもOK」
』」

アンスペース

アンスペースとは、バックスラッシュ\の後に続く空白文字とコメントを構文解析に無視させる機能です。C言語で改行文字をエスケープする機能とよく似ています。

括弧文字と同様に、ユニコードで定義されている空白文字ならなんでもアンスペースできます。特にメリットはありませんが全角空白でも可能です。

(ちなみにアンスペースに限らず、Perl 6では半角と全角の空白に区別はありません。全角空白をコード中に書いても普通に動きます)

以下のコードは全て「Hello Perl 6」を出力します。バックスラッシュの後に続く空白文字(改行含む)やコメントは全て「無かった」ことにされます。

"Hello Perl 6".say; # say "Hello Perl 6" と同じ

"Hello Perl 6"\    .say;

# 分かりにくいけど全角空白でも可能
"Hello Perl 6"\    .say;

# 改行を無効化
"Hello Perl 6"\
.say;

"Hello Perl 6"\ # 途中にコメントがあっても無視される
.say;

"Hello Perl 6"\ #`(
    埋め込みコメントも全部無視される
).say;

動作確認環境と参考情報