frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

祝福遊び。

perl で sub new ん時に bless しますが、

無意識に {} (ハッシュのリファレンス)に bless してるものの

他は bless 出来ないのか?と思って遊んだメモ。

・main.pl

#!/usr/bin/perl -w

use strict;

use Test;

my $obj = Test->new();

use Data::Dumper;

print Dumper $obj;

exit();

・Test.pm グロブのリファレンス

package Test;

sub new {

my $me = shift;

my $ref = \*test;

bless $ref, $me;

}

1;

$VAR1 = bless( \*Test::test, 'Test' );

・Test.pm スカラーのリファレンス

package Test;

sub new {

my $me = shift;

my $testString = 'test';

bless \$testString, $me;

}

1;

$VAR1 = bless( do{\(my $o = 'test')}, 'Test' );

・Test.pm 配列のリファレンス

package Test;

sub new {

my $me = shift;

my @testArray = qw(aa bbb);

bless \@testArray, $me;

}

1;

$VAR1 = bless( [

'aa',

'bbb'

], 'Test' );

・Test.pm 無名サブルーチンのリファレンス

package Test;

sub new {

my $me = shift;

my $sub = sub {print "test"};

bless \$sub, $me;

}

1;

$VAR1 = bless( do{\(my $o = sub { "DUMMY" })}, 'Test' );

んあ?何故「DUMMY」なんだっけ?

…という訳で、

なにはともあれ、ハッシュのリファレンスじゃなくても

使えない訳でもないっぽい。へー。