Perlゼミ

Perlでテキスト処理、Linuxサーバー管理、Webシステム開発
  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;
Perlの入門書
  • 初めてのPerl 第7版

    Perl入門 定番の一冊
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
Twitter
Perlゼミの情報が役立ったら、フォロー、いいね、リツートで応援。