Produced by career-info
#perl(ハッシュパール)|サイトマップ
Perl初心者、Perl入門者向けに、Perlの基礎/基本を中心に、サンプルを例に解りやすく丁寧に解説しています。

15.サブルーチン

この章では、Perlにおけるサブルーチンについて説明します。


15.1 サブルーチンとは?

Perlにおけるサブルーチンは、同じ処理を共通化しまとめることにより、一連の処理をサブルーチンとして一つにすることで、Perl内の様々な箇所からサブルーチンを呼び出すことにより処理を実現することができます。


15.2 サブルーチンの基本形

(1) Perlにおけるサブルーチンの基本的な形は以下のようになります。

■サブルーチンの基本形

sub サブルーチン名() {
サブルーチンとして実行する処理;


return 返却値;
}


■サブルーチンの例

sub get_sysdate() {
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
$year = $year + 1900;
$mon ++;

$localdate = sprintf("%4d/%02d/%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);

return $localdate;
}


※上記のサブルーチンの例は、現在のシステム日時を取得するサブルーチンの例となり、以下のような動きとなります。
・Perlのlocaltime関数を使用し、現在のシステム日時を取得。
・localtime関数で取得した年は、1900年以降の年が返却されるため、年に1900をプラス。
・localtime関数で取得した月は、0から始まるため、月に1をプラス。
・localtime関数で取得した現在のシステム日時を、sprintfにて"YYYY/MM/DD HH:MM:SS"にフォーマット変換。
・return文にて、フォーマット変換した現在のシステム日時をサブルーチンの呼び出し元に返却。


15.3 サブルーチンの呼び出し

(1) Perlからのサブルーチンの呼び出しは、以下のように行います。

■サブルーチンの呼び出し

&サブルーチン名();


※基本的には、呼び出すサブルーチンの前に&を付けてサブルーチンを呼び出します。(&を付けなくてもサブルーチンを呼び出すことが出来る場合がありますが、明示的に&を付けた方がよいです。)

■サブルーチンの呼び出しの例

#!/usr/bin/perl

$sysdate = &get_sysdate(); #サブルーチン呼び出し
print "$sysdate¥n";

exit;

sub get_sysdate() {
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
$year = $year + 1900;
$mon ++;

$localdate = sprintf("%4d/%02d/%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);

return $localdate;
}


■サブルーチン呼び出し例の実行結果

D:¥test>perl sample.pl
2016/05/01 11:50:28




15.4 サブルーチンへの引数の受け渡し

(1) Perlにおけるサブルーチンへの引数の受け渡し方法は以下のようになります。

■サブルーチン呼び出し(引数あり)

&サブルーチン名(引数1、引数2...);


※上記のように、サブルーチンを呼び出す括弧内に引数を指定します。

■サブルーチン(引数あり)

sub サブルーチン名() {
$_[0]; #引数1
$_[1]; #引数2

サブルーチンとして実行する処理;


return 返却値;
}


※引数はPerl独自の変数である $_[0]、$_[1]...という変数に、引数で指定された順番に格納されます。

■サブルーチン(引数あり)の例

#!/usr/bin/perl

$price = &get_price(100); #サブルーチン呼び出し
print "$price円¥n";

$price = &get_price(200); #サブルーチン呼び出し
print "$price円¥n";

exit;

sub get_price() {

return $_[0] * 1.08;

}


※上記のサブルーチンの例は、引数で与えられた金額に対して、サブルーチンにて税込金額を計算し返却する例となり、以下のような動きとなります。
・get_priceというサブルーチンを呼び出す際に、引数として金額をサブルーチンに受け渡し。
・get_priceというサブルーチン側では、$_[0]という変数に、引数である金額が格納されているため、$_[0]に1.08を掛けて呼び出し元に返却。

■サブルーチン(引数あり)の例の実行結果

D:¥test>perl sample.pl
108円
216円

[関連記事]
 


■IT関連記事
■ご意見・ご感想について

#perl(ハッシュパール)|HOMEへHOME #perl(ハッシュパール)|ページ先頭へページ先頭へ
当サイト(#perl)では、Perl初心者、Perl入門者向けに、Perlの基礎/基本を中心に、サンプルを例に解りやすく丁寧に解説しています。
当サイトを通して、Perlの楽しさ、Perlの素晴らしさが伝われば幸いです。
キャリアインフォ
career.nについてリンクについて
ご利用規約プライバシーポリシーお問い合わせ