サブルーチンを呼び出す

定義したサブルーチンはプログラムの中から呼び出すことができます。ここでは Perl のプログラムでサブルーチンを呼び出す方法について解説します。

(Last modified: )

サブルーチンを呼び出す

サブルーチンを定義したらプログラムの中から呼び出して使用します。サブルーチンを呼び出す時の書式は次の通りです。

&サブルーチン名;

sub サブルーチン名{
	実行する処理;
}

サブルーチンの呼び出しはアンパサンド( & )の後に呼び出すサブルーチン名を記述します。

サブルーチンの呼び出しが行われると、処理の順序はサブルーチン内へ移動します。

次の例で考えてみます。

print "開始\n";
&hello;
print "終了\n";

sub hello{
	print "hello\n";
}

まず print "開始\n"; が実行されたあとで、 &hello; が実行されてサブルーチンが呼び出されます。するとサブルーチンのブロック内に処理が移り print "hello\n"; が実行されます。サブルーチン内の処理がすべて実行されると、サブルーチンを呼び出した次の処理が実行されます。最後に print "終了\n"; が実行されます。

よって上記のサンプルを実行すると次のような出力結果となります。

開始
hello
終了

このようにサブルーチンはプログラム中のどこに記述されていたとしても、サブルーチンが呼び出された時点でサブルーチンのブロック内の処理が実行されます。

なおサブルーチン内の処理はサブルーチンが呼び出されたときしか実行されません。先ほどのサンプルでは print "終了\n"; のあとにサブルーチンが定義されていますが、このサブルーチン内に記述された処理は実行されずそのままプログラムは終了します。

サブルーチンの呼び出しとサブルーチンの定義の位置関係について

プログラムの中でサブルーチンの定義とサブルーチンの呼び出しはどちらが先でも構いません。先ほどのサンプルではサブルーチンの呼び出しが先に記述されていてサブルーチンの定義はあとに記述されていましたが、次のように先にサブルーチンの定義がされていても大丈夫です。

sub hello{
	print "hello\n";
}

print "開始\n";
&hello;
print "終了\n";

プログラムを実行すると、先ほどとまったく同じ流れで処理が進み、同じ結果となります。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

sub disphello{
    print "hello\n";
}

print "サブルーチンのテスト\n";

&disphello;
&dispbye;

print "終了\n";

sub dispbye{
    print "bye\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

サブルーチンを呼び出す(1)

プログラムの中でサブルーチンを先に記述して呼び出す場合と、サブルーチンを後に記述して呼び出す場合の両方を行いました。どちらの場合も問題なく呼び出すことができます。

-- --

Perl のプログラムでサブルーチンを呼び出す方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。