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();
で戻り値を受け取ります。
コメントの書き込み
コメント
2018年07月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード