Perlの文法

条件

真偽値が評価されるとき、「偽」となるとは

  • 数値 0
  • 文字列 '0'と空文字 ''
  • 空リスト ()
  • undef

の4つで、これ以外は「真」と評価されます。

if

if( condition ) {
    ...
} elsif( other condition ) {
    ...
} else {
    ...
}
if - perldoc.perl.org elsif - perldoc.perl.org

C言語などと異なり、else ifではなくelsifです。これはelseifでもないため、注意が必要です。たとえば「else if」と記述するとsyntax errorとなり、「elseif」では「elseif should be elsif」と指摘されてsyntax errorとなります。

if( $a ) {
    print 'true';
} else {
    print 'false';
}

ifの否定形であるunlessを用いると、これは

unless( ! $a ) {
    print 'true';
} else {
    print 'false';
}

のように書き換えられます。

Perlではブロックの波かっこは省略できないため、

if( $a ) print 'true';

のような記述は認められません。これはsyntax errorとなります。ただし、このように1行で表現する特別な構文が用意されており、その方法では

print 'true' if( $a )

のように順を入れ替えて記述します。

ループ

while

for

C言語と同様の構文でfor文を記述できます。

for( my $i = 1; $i < 10; $i++ ) {
    ...
}
For Loops - perlsyn - perldoc.perl.org for ループ - perlsyn - Perl の文法 - perldoc.jp

foreach

foreach my $value ( @a ) {
    print "$value\n";
}
Foreach Loops - perlsyn - perldoc.perl.org foreach ループ - perlsyn - Perl の文法 - perldoc.jp

$valueを省略して、デフォルト引数の$_で要素を参照することもできます。

foreach( @a ) {
    print "$_\n";
}

さらにforeachを略して、forと記述することも可能です。

for( @a ) {
    print "$_\n";
}

例外

例外処理は仕様としては用意されていませんが、evalがその代替となります。

コメント

「#」以降がコメントとみなされます。コメント - perlsyn - Perl の文法 - perldoc.jp

# print "Hello";

複数行のコメントはサポートされないため、PODを利用して実現します。

=pod
...
=cut

このときコメントの開始を表すpodは任意の文字を指定でき、podの文字列に意味はありません。より正式には次の書式を使用します。

=begin comment
...
=end comment
=cut

=beginと=endの後には、同一の任意の文字列を指定します。How can I comment out a large block of Perl code? - perldoc.perl.org

参考

ドキュメント

日本語ドキュメントのURLは、公式のそれに対して

  • https://perldoc.perl.org/***.html
  • https://perldoc.jp/docs/perl/***.pod (または perl/x.xx.x/***.pod)

の関係にあります。

Perlの情報サイトから、まとめて検索