これが答えとして4を返す方法がわかりません。サブルーチン内で何が起こっているのかわかりません。
sub bar {@a = qw (10 7 6 8);}
my $a = bar();
print $a;
# outputs 4
これが答えとして4を返す方法がわかりません。サブルーチン内で何が起こっているのかわかりません。
sub bar {@a = qw (10 7 6 8);}
my $a = bar();
print $a;
# outputs 4
サブルーチンは、スカラー コンテキストで呼び出されます。サブルーチンの最後のステートメントは への代入@a
です。これは式であるため、暗黙の戻り値になります。スカラー コンテキストでは、 this は代入の右辺によって返される要素の数に評価されます (たまたま の要素の数と同じです@a
)。
return
Perl では、サブルーチンの戻り値は、ステートメントが指定されていない場合に評価される最後の式です。
perlsubドキュメントから:
return が見つからず、最後のステートメントが式の場合は、その値が返されます。最後のステートメントが foreach や while などのループ制御構造である場合、返される値は規定されていません。空のサブルーチンは空のリストを返します。