frei

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

型?。

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 -w

use strict;

use lib qw(/home/anigon);

use Type;

my AAA $obj = Type->new();

exit;

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.

・・・まぁ、確かに perl さんとしても

「AAAってなんやねんっ」って気分なんでしょう…。

そこで、試しに違うモジュールを用意して

意図的に new してるモジュールと

「型(?)」らしき部分とで、違うものを指定してみる。

・Test.pm

package Test;

sub new {

my Test $self = shift;

bless {}, $self;

}

1;

#!/usr/bin/perl -w

use strict;

use lib qw(/home/anigon);

use Type;

use Test;

my Test $obj = Type->new();

exit;

・・・が、エラーにならない orz

えーっと、つまり意味はないんですかね。。。うーむ。