スカラ変数のリファレンス
スカラ変数のリファレンスは、スカラ変数を指し示すものです。
スカラ変数のリファレンスの作成
スカラ変数のリファレンスを作成するには次のようにします。
my $str = "Hello"; my $str_ref = \$str;
スカラ変数のリファレンスをデリファレンス
スカラ変数のリファレンスをデリファレンスするには「${}」とします。
my $str = ${$str_ref};
単純な変数であれば先頭に「$」を付けるだけでデリファレンスできます。
my $str = $$str_ref;
スカラ変数のリファレンスを使う意義はありますか?
大きなサイズの文字列をサブルーチンに渡す場合は、リファレンスを使ったほうが、速い気がしますね。
でも、Perlでは、文字列はコピーオンライトと呼ばれる手法を使ってコピーされるので、実際に文字列に変更が加えられるまでは、コピーが行われません。
ですから、大きなサイズの文字列でも、気にしないで、サブルーチンの引数に渡してください。
Getopt::Long
自分でプログラミングをするときは、スカラ変数のリファレンスを利用する機会はほぼありませんが、ライブラリが使っている場合は、使い方を覚えておく必要があります。
よく利用するモジュールとしてはGetopt::Longがあります。
# GetOptionsによるコマンドライン引数のオプションの処理 # デフォルト値の設定 my $enable_cache; my $max_clients = 5; my $type = 'prefork'; # オプションの処理 GetOptions( 'enable_cache' => \$enable_cache, 'max_clients=i' => \$max_clients, 'type=s' => \$type ); # オプション以外の引数を受け取る my $conf_file = shift;