Perlゼミ(サンプルコードPerl入門)

2018-03-08

スカラ変数のリファレンス

  1. Perl
  2. リファレンス
  3. here

スカラ変数のリファレンスは、スカラ変数を指し示すものです。

スカラ変数のリファレンスの作成

スカラ変数のリファレンスを作成するには次のようにします。

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;

  1. Perl
  2. リファレンス
  3. here

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証