関数順 インデックス
目的別 インデックス

構文
 
 ref 変数

返り値
 
 リファレンスの場合に真

説明

  • 指定した変数の型がリファレンスの場合に真を返します。真が返ってきた場合の値は,指定した変数の種類によって変化します。

使用例

変数$data1~$data6のrefの結果を表示する
#!/usr/bin/perl
use strict;
use warnings;
use IO::File;

my $data1 = 1;
my $data2 = 'a';
my $data3 = [1, 2, 3];
my $data4 = {key => 'KEY', val => 'VAL'};
my $data5 = IO::File->new;
my $data6 = sub {my $n = shift; return $n *2;};

print ref $data1, "\n"; # (偽)
print ref $data2, "\n"; # (偽)
print ref $data3, "\n"; # ARRAY
print ref $data4, "\n"; # HASH
print ref $data5, "\n"; # IO::File
print ref $data6, "\n"; # CODE
変数$data1~$data3に対してリファレンスの種類に合わせた処理を実行する
#!/usr/bin/perl
use strict;
use warnings;

my $data1 = 100;
print "---\n";
print_data($data1);
print "\n";

my $data2 = [1, 10, 100];
print "---\n";
print_data($data2);
print "\n";

my $data3 = {1 => 'one', 2 => 'two'};
print "---\n";
print_data($data3);
print "\n";

sub print_data {
  my $data = shift;
  if (ref $data eq 'HASH') {
    foreach my $key (keys %$data) {
      printf "%s = %s\n", $key, $data->{$key};
    }
  } elsif(ref $data eq 'ARRAY') {
    foreach my $item (@$data) {
      print $item, "\n";
    }
  } else {
    print "???\n";
  }
}