perl リファレンス1

#スカラー変数をリファレンスで渡し、サブルーチンで内容を変更する

$string = "私は太郎です。";

#サブルーチン実行前
print "実行前: $string\n";

#リファレンスを渡してサブルーチン実行
&sub_reference(\$string);

#サブルーチン実行後:
print "実行後: $string\n";

#サブルーチン
sub sub_reference{
    #リファレンスを受ける
    my($referece) = @_;

    #リファレンスのスカラー変数の内容を変更
    $$referece =~ s/太郎/花子/;
}

#実行結果
# 実行前: 私は太郎です。
# 実行後: 私は花子です。

#\$stringによって変数$stringのリファレンスを返し、それをサブルーチンの引数にしている。
#サブルーチンの中では、myで宣言したローカル変数$refereceにそのリファレンスを代入している。
#$$refereceではリファレンスによって元の変数の内容が取得されるので、その中の「太郎」を「花子」
#に置き換えている。
#サブルーチンのなかではmyを使ってリファレンスをローカル変数として定義しているが、そのリファレンス先
#の内容を変更するとグローバル変数の内容が操作される。

初めてのPerl 第6版

初めてのPerl 第6版