本文へスキップ
BecomeCoder

Perlコース · 第6章 サブルーチン · レッスン20

引数と戻り値 ― return で結果を返す

ブラウザで完結

導入

サブルーチンは return で結果を返せます。Perl では複数の値をまとめて返せるのが便利なところです。

説明

return 式; で値を返します。返した値は呼び出し側で受け取れます。

use strict;
use warnings;

sub add {
    my ($x, $y) = @_;
    return $x + $y;
}

my $result = add(3, 5);
print "$result\n";          # 8
print add(10, 20), "\n";    # 30(直接使ってもよい)

リストで返せば、複数の結果を一度に受け取れます。

use strict;
use warnings;

sub min_max {
    my @sorted = sort { $a <=> $b } @_;
    return ($sorted[0], $sorted[-1]);   # 最小と最大
}

my ($min, $max) = min_max(3, 9, 1, 7);
print "最小 $min / 最大 $max\n";        # 最小 1 / 最大 9

やってみよう

add に渡す数を変えたり、min_max の引数を増やしたりして結果を確かめましょう。

演習

2つの数を受け取り、そのを返すサブルーチン multiply を定義し、multiply(6, 7) の結果を表示してください(結果は 42)。

ヒント1を見る

sub multiply { my ($x, $y) = @_; return $x * $y; } のあと print multiply(6, 7), "\n";

実際に動かしてみよう

下のエディタにPerlを書いて「実行」を押すと、学習用シミュレータが print / say の出力を表示します(本物のperlではなく、教材の範囲を再現した軽量なエンジンです)。スカラ/配列/ハッシュ・制御構文・サブルーチン・正規表現(=~ / s///)なども動きます。本文の例を書き換えて動かしてみましょう(ファイル入出力・リファレンス・CPANモジュールなど一部の機能は対象外です)。

Perl — ブラウザ内で実行(学習用シミュレータ)

Perlの教材サブセットを動かす学習用シミュレータを読み込みます(本物のperlではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。