Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  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とはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。