Perlコーディング
サブ関数
2007年11月19日
今日はサブ関数作成に挑戦です。
コール
&function_name();
関数
sub function_name {
・
・
・
}
Perlでは、引数は標準で参照渡しされるようです。
&function_name(hikisu1, hikisu2);
sub function_name {
$_[0];
$_[1];
・
・
・
}
引数は@_という特別な変数の中にあるので、順番に、$_[0]、$_[1]、・・・で参照できます。関数内で$_[0]や$_[1]の値を変更すると、呼び出し元の変数も変更されます。
これを値で渡したい場合(値渡し)
&function_name(hikisu1, hikisu2);
sub function_name {
my ($val1, $val2) = @_;
・
・
・
}
function_nameの中だけで有効な変数に値をコピーしているので、コール側の値は変わりません。
my ($val1, $val2) = @_; は複数の引数を一度に代入していますが、
$val1 = shift @_;
$val2 = shift @_;
とすると1つ1つ指定できます。
また、Perlでは変数は宣言(my)しない限り、Globalです。
ということは、引数が変数で参照渡ししたいときは、わざわざ引数で渡さなくてもよいということ。でもきっともっと奥の深い何かがあるはず。
sub function_name {
my ($val1, $val2) = @_;
処理1
return (戻り値);
処理2
}
の様にreturnを使うと、処理2は行わず、戻り値をコール側に返して、関数を終了します。
コール側は
$modori = &function_name();
で戻り値を受け取ります。
コール
&function_name();
関数
sub function_name {
・
・
・
}
Perlでは、引数は標準で参照渡しされるようです。
&function_name(hikisu1, hikisu2);
sub function_name {
$_[0];
$_[1];
・
・
・
}
引数は@_という特別な変数の中にあるので、順番に、$_[0]、$_[1]、・・・で参照できます。関数内で$_[0]や$_[1]の値を変更すると、呼び出し元の変数も変更されます。
これを値で渡したい場合(値渡し)
&function_name(hikisu1, hikisu2);
sub function_name {
my ($val1, $val2) = @_;
・
・
・
}
function_nameの中だけで有効な変数に値をコピーしているので、コール側の値は変わりません。
my ($val1, $val2) = @_; は複数の引数を一度に代入していますが、
$val1 = shift @_;
$val2 = shift @_;
とすると1つ1つ指定できます。
また、Perlでは変数は宣言(my)しない限り、Globalです。
ということは、引数が変数で参照渡ししたいときは、わざわざ引数で渡さなくてもよいということ。でもきっともっと奥の深い何かがあるはず。
sub function_name {
my ($val1, $val2) = @_;
処理1
return (戻り値);
処理2
}
の様にreturnを使うと、処理2は行わず、戻り値をコール側に返して、関数を終了します。
コール側は
$modori = &function_name();
で戻り値を受け取ります。
コメント