Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 演算子
  3. here

デリファレンス

デリファレンスとはリファレンスを作成するのと反対の操作で、リファレンスから実体を取り出すことができます。

配列のリファレンスをデリファレンス

配列のリファレンスをデリファレンスするには「@{}」を使用します。

my @array = @{$array_ref};

新しい配列が作られるわけではなく、実体が取り出されているということを意識してください。

「@{}」の内側が単純な変数の場合は「{}」を省略することができます。

my @array = @$array_ref;

配列のリファレンスをデリファレンスするサンプルプログラムです。

# 配列のリファレンス
my $nums_ref = [1, 2, 3];

# デリファレンス
my @nums = @$nums_ref;

Perlの配列操作を行う標準関数は、配列のリファレンスではなく、配列を渡す必要があります。このような場合は、デリファレンスして、関数に渡してください。

my $nums = [1, 2, 3];

my $num = shift @$nums;

ハッシュのリファレンスをデリファレンス

ハッシュのリファレンスのデリファレンスを行うには「%{}」を使用します。

my %hash = %{$hash_ref};

新しいハッシュが作られるわけではなく、実体が取り出されているということを意識してください。

「%{}」の内側が単純な変数の場合は「{}」を省略することができます。

my %hash = %$hash_ref;

ハッシュのリファレンスをデリファレンスするサンプルプログラムです。

# ハッシュのリファレンス
my $score_ref = {math => 19, english => 89};

# デリファレンス
my %score = %$score_ref;

Perlのハッシュ操作を行う標準関数は、ハッシュのリファレンスではなく、ハッシュを渡す必要があります。このような場合は、デリファレンスして、関数に渡してください。

my $score = {math => 89, english => 45};

my @keys = keys %$score;

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

スカラ変数のリファレンスのデリファレンスを行うには「${}」を使用します。

my $scalar = ${$scalar_ref};

「${}」の内側が単純な変数の場合は「{}」を省略することができます。

my $scalar = $$scalar_ref;

スカラのリファレンスをデリファレンスするサンプルプログラムです。

# スカラのリファレンス
my $string1 = "Hello";

my $string_ref = \$string;

# デリファレンス
my $string2 = $$string_ref;

他のリファレンスのデリファレンスはできるの?

サブルーチンのリファレンス正規表現のリファレンスは、デリファレンスすることができません。

Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング