型?。
Cache::Memcache のコードを読んでたら
見慣れない書き方を見つけた。
・・・はい?sub new {
my Cache::Memcached $self = shift;
てな訳で、Java で変数宣言する時の型みたいだったので、
試しに私も真似してみる。
・Param.pm
package Type;sub new {
my Type $self = shift;
bless {}, $self;
}
1;
・test.pl
#!/usr/bin/perl -w・・・確かに何もエラーにもならない。use strict;
use lib qw(/home/anigon);
use Type;
my Type $obj = Type->new();
exit;
でも、Dumper してみても、何も変化はないし
-MO=Deparse してみても、特に変わった何かをしている気配もない。
そこで、適当な値を「型(?)」として埋め込んでみると…
#!/usr/bin/perl -wuse strict;
use lib qw(/home/anigon);
use Type;
my AAA $obj = Type->new();
exit;
・・・まぁ、確かに perl さんとしてもNo such class AAA at ./test.pl line 7, near "my AAA"
Global symbol "$obj" requires explicit package name at ./test.pl line 7.
Execution of ./test.pl aborted due to compilation errors.
「AAAってなんやねんっ」って気分なんでしょう…。
そこで、試しに違うモジュールを用意して
意図的に new してるモジュールと
「型(?)」らしき部分とで、違うものを指定してみる。
・Test.pm
package Test;sub new {
my Test $self = shift;
bless {}, $self;
}
1;
#!/usr/bin/perl -w・・・が、エラーにならない orzuse strict;
use lib qw(/home/anigon);
use Type;
use Test;
my Test $obj = Type->new();
exit;
えーっと、つまり意味はないんですかね。。。うーむ。