1. ホーム
  2. スクリプト・コラム
  3. パール

Perl関数(サブルーチン)学習ノート

2022-01-28 09:28:30

I. 関数の定義

サブルーチンは、コードの繰り返しを減らし、プログラムを読みやすくするための独立したコードの一部分です。しかし、通常はプログラムの先頭か末尾に置かれます。

コピーコード コードは以下の通りです。

sub subroutine{
    statements;
}

サブスタート、サブルーチン名は変数の命名規則と同じで、変数と同じ名前にすることができ、好ましくは内部関数と同じ名前ではない、内部関数と同じ名前の場合は、$subroutineを使用して区別する、使用しないでください&は内部関数、使用&です;が機能の定義、混乱するとき&を省略する;。

サブルーチンの定義とプロトタイプの説明。

コピーコード コードは以下の通りです。

sub subroutine($$){ # requires two arguments for simple variables
    statements;
}

説明

1. ()内の記号は引数の種類を表し、1文字で1つの引数を表す。
2.$ 単純変数 @ リスト % ハッシュ & 匿名サブルーチン * リファレンス
3. 3. Preceded by \ to force type consistency, ; separating required and optional arguments.
4. \第1引数はリスト、第2引数は単純変数、第3引数はオプションの単純変数を意味します。

次に、関数の戻り値

1. デフォルトサブルーチンの最後の文でなくても、if ブロックの中で最後に実行された文であれば、その文の値が戻り値として使用されます。

コピーコード コードは以下の通りです。

$a=1;

イコールにする必要はなく、$retvalだけでよい。

コピーコード コードは以下の通りです。

split(/:/,@a) Returns an array.

2. return(retval)ステートメントはサブルーチンを終了し、リストであるretvalの値を返します。

3. リターンエラー

return return error undef

eval('subroutine')関数では、エラーは変数$@から取得されます。

III. 関数の引数渡し

フォーム:

コピーコード コードは以下の通りです。

$sub1($num1,$unm2,$num3); call
sub sub1{
my($num1,$unm2,$num3)=@_;
}
my $num1=shift;
my $num2=shift;
my $num3=pop;

説明

1. すべての引数は配列 @_ で、各要素は $_[0],$_[1] です。
2. 2. @_,$_[] はローカル変数で、サブルーチン内で再度呼び出すと、@_は変化せず、@_のコピーがもう1つ生成されます。
3. 3. $_[0] のように @_ 内の要素の値を変更すると、メインプログラムのパラメータの値も変更されます。
4. shift popは1回に1つの引数を取ります。の操作では、shiftは最初の引数を取ってから削除し、popは最後の引数を取ってから削除します。