at_yasu's blog

ロード的なことを

名無し構文と、お前ダレ?

匿名ハッシュとか配列とかスカラーとかサブルーチンを作成するのに、Perlでは下記の構文がある。

my $anon_sub  = sub () {};
my $anon_hash = {};
my $anon_arr  = [];
my $anon_sc   = \do { my $anon_scalar = "" };

そしてref関数を使えば、そのスカラーが何者かがわかる。

以下、実験コード

#!/usr/bin/perl -wT

use strict;

my $anon_sub  = sub () {};
my $anon_hash = {};
my $anon_arr  = [];
my $anon_sc   = \do { my $anon_scalar = "" };

$, = "\n";
print "anon_sub  -> " . ref $anon_sub,
      "anon_hash -> " . ref $anon_hash,
      "anon_arr  -> " . ref $anon_arr,
      "anon_sc   -> " . ref $anon_sc,
      "";

上記のスクリプトを実行した結果。

[negro: ~/perls][16:38] $ ./ref.pl
anon_sub  -> CODE
anon_hash -> HASH
anon_arr  -> ARRAY
anon_sc   -> SCALAR
[negro: ~/perls][16:38] $ 

とりあえず、走り書き兼覚え書き。以上かな?

参考:Perlベストプラクティス