tech.chakapoko.com
Home / Perl

Perlの基本文法

文法チェックと警告の表示

スクリプトを書く時には必ずファイルの先頭に次の2行を入れます。

use strict;
use warnings;

変数宣言

変数宣言には my をつけます。

スカラ変数

スカラ変数は $ で始めます。

my $num = 1;
my $message = 'Hello';

配列変数

配列の定義

配列変数は @ で始めます。

my @nums = (1, 2, 3);

配列の要素の参照

配列の要素を参照するときは変数の最初は $ にします。

use strict;
use warnings;

my @nums = (1, 2, 3);

print $nums[0] . "\n";
print $nums[1] . "\n";
print $nums[2] . "\n";

このスクリプトの実行結果は次のようになります。

1
2
3

配列の長さの取得

配列をスカラコンテキストで評価すると長さを取得できます。

use strict;
use warnings;

my @nums = (1, 2, 3);
my $length = @nums;

print "length: $length\n";

このスクリプトの実行結果は次のようになります。

length: 3

ハッシュ変数

ハッシュの定義

ハッシュ変数は % で始めます。

my %months = ('Jan' => 'January', 'Feb' => 'Feburary');

ハッシュの要素の参照

ハッシュの要素を参照するときは変数の最初は $ にします。

use strict;
use warnings;

my %months = ('Jan' => 'January', 'Feb' => 'Feburary');

print $months{'Jan'} . "\n";

このスクリプトの実行結果は次のようになります。

Jan
Feb

コメント

コメント行は # で始めます

# これはコメントです

文字列

文字列はシングルクオートまたはダブルクオートで囲みます。

文字列の配列を作る

四則演算

print 1 + 1 . "\n";      # => 2
print 1 - 1 . "\n";      # => 0
print 3 * 2 . "\n";      # => 6
print 3 / 2 . "\n";      # => 1.5
print int(3 / 2) . "\n"; # => 1
print 3 % 2 . "\n";      # => 1

関数呼び出し

関数呼び出しの括弧は省略できます。

print("Hello World\n");
print "Hello World\n";

繰り返し

繰り返しには foreach, for, while を使います。

foreachでの繰り返し

use strict;
use warnings;

my @nums = (1, 2, 3);

my $sum = 0;
foreach my $num (@nums) {
    $sum += $num;
}

print "sum: $sum\n";

このスクリプトの実行結果は次のようになります。

sum: 6

forでの繰り返し

use strict;
use warnings;

my @nums = (1, 2, 3);

my $sum = 0;
for (my $i = 0; $i < @nums; $i++) {
    $sum += $nums[$i];
}

print "sum: $sum\n";

whileでの繰り返し

use strict;
use warnings;

my @nums = (1, 2, 3);

my $i = 0;
my $sum = 0;
while ($i < @nums) {
    $sum += $nums[$i];
    $i++;
}

print "sum: $sum\n";

ハッシュの繰り返し

ハッシュ内の繰り返しはハッシュのキー一覧を取得する keys 関数を利用して行います。

use strict;
use warnings;

my %months = ('Jan' => 'January', 'Feb' => 'Feburary');

foreach my $key (keys %months) {
    print $months{$key} . "\n";
}

このスクリプトの実行結果は次のようになります。

January
Feburary

条件分岐

条件分岐には if, elsif, else を使います。

use strict;
use warnings;

my @nums = (1, 2, 3, 4, 5);

foreach my $num (@nums) {
    if ($num % 15 == 0) {
        print "FizzBuzz\n";
    } elsif ($num % 3 == 0) {
        print "Fizz\n";
    } elsif ($num % 5 == 0) {
        print "Buzz\n"
    } else {
        print $num . "\n";
    }
}

サブルーチンの定義

サブルーチンは sub で定義します。引数は @_ という配列に入り、結果は return で返します。

use strict;
use warnings;

sub plus {
  my ($a, $b) = @_;
  return $a + $b;
}

my $result = plus 1, 2;

print $result . "\n";

このスクリプトの実行結果は次のようになります。

3