関数を早めに抜け出す
return
は、EXPR に与えられた値を伴って、
サブルーチン、eval
、
do FILE
、sort
といったブロックや、正規表現評価ブロック (grep
,
map
, do BLOCK
ブロックは除きます) から戻ります。
EXPR の評価は、リストコンテキスト、スカラーコンテキスト、ボイドコンテキストのいずれになることもできます。
それは戻り値がどのように使われるのかによるため、コンテキストは実行ごとに変わる可能性があります
(wantarray
をご覧ください)。
EXPR が与えられなければ、リストコンテキストでは空のリストが、スカラーコンテキストでは未定義値が返り、
ボイドコンテキストでは当然ながら何も返りません。
(サブルーチン、eval
、do FILE
は、
return
がなければ、自動的に最後の式評価の値を返します。)
次の例ではサブルーチン my_func
が 'one', 'two', 'three'
というリストを返しています。
そして、このサブルーチンの戻り値を 3 つの方法で受け取っています。
sub my_func {
return 'one', 'two', 'three';
}
# スカラーコンテキスト
my $var = &my_func(); # "trhee"
# リストコンテキスト
my ($val) = &my_func(); # "one"
my ( $val1, $val2 ) = &my_func(); # "one", "two"
my @ary = &my_func(); # ("one", "two", "trhee")