TWクラブ【BloodyRosary】@11.サブルーチン


・普通のサブルーチン呼び出し
	例

	$x = 80;
	$y = 55;
	$z = 75;

	&answer;		呼び出しは& + 名前 でやる

	sub answer {
		$total = $x + $y + $z;
		$mean = $total / 3;

		print "合計点数は$total点で、平均点数は$mean点です。\n";
	}

・引数と戻り値

	例

	&answer(80, 55, 75);				@list などの配列でもOK

	sub answer {
		($x, $y, $z) = @_;			引数は@_に格納されている
		$total = $x + $y + $z;
		$mean = $total / 3;

		print "合計点数は$total点で、平均点数は$mean点です。\n";
	}


	($total, $mean) = &answer(80, 55, 75);
	print "合計点数は$total点で、平均点数は$mean点です。\n";

	sub answer {
		($x, $y, $z) = @_;
		$total = $x + $y + $z;
		$mean = $total / 3;

		return ($total, $mean);			戻り値は普通に、こんな感じで渡せる
	}



・局所化

	例

	my $word = "雨";
	local $word = "雨";

	my と local の違い
	localの場合、サブルーチンから呼び出したサブルーチンからは参照が可能。
	myは参照できない。

	これはサイトみたほうが早い
	http://www.kent-web.com/perl/chap8.html



・参照渡し

	例

	my $name = "dell";

	print "$name \n";

	my $name_out = name_plus(\$name);					参照渡しは \ を前につける

	print "$name_out \n";

	sub name_plus {

		my $name_in = shift;

		$$name_in = "$$name_in さん";				参照するには前に$をさらにつける。 dell を dellさん にしている

		return $$name_in;
	}

	<出力結果>
	dell
	dell さん

	ちなみに間違えて参照を渡してしまうと…

	return $name_in;

	<出力結果>(端末により違うとは思うが)
	dell
	SCALAR(0x1d8a0010)			こんな感じのが出てくる



プロトタイプについて
http://perl-users.jp/modern_introduction_perl/sub_prototype.html

Perl目次に戻る

別館TOPに戻る
ブログに戻る

BloodyRosary
Presents by 【BloodyRosary】
Copyrights (C) NEXON Corporation and NEXON Co., Ltd.
All Rights Reserved.