祝福遊び。
perl で sub new ん時に bless しますが、
無意識に {} (ハッシュのリファレンス)に bless してるものの
他は bless 出来ないのか?と思って遊んだメモ。
・main.pl
#!/usr/bin/perl -wuse 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」なんだっけ?
…という訳で、
なにはともあれ、ハッシュのリファレンスじゃなくても
使えない訳でもないっぽい。へー。