> 2001/02/18 (日) 13:03:20 ◆ ▼ ◇ [mirai]> > サンクスコ
> > でも違ったみたい
>
> bless { name => shift }, $class;
> これと
> $debug->clear;
> コレって何してるんですケ(?ー`)ノ
bless関数
bless関数は、リファレンスとパッケージ名を引数とします。
第1引数で与えられたリファレンスが指すオブジェクトは、
第2引数で指定したクラスに所属します。
第2引数のパッケージ名はオプションで、
省略すると現在のパッケージ名を引数とします。
$debug->clearすると
新しく作ったオブジェクト$debugのメソッドclearを呼び出す
さっきの場合だとdebug.logを空にする関数をメソッドを呼び出す
perlのoopのサンプルコード
# Circle のパッケージ名を設定
package Circle;
# Circle のクラスメソッド(コンストラクタ)
sub new{
# 暗黙のうちに引き渡されるパッケージ名を受け取る
my $class = shift;
# 任意の引数を受け取る
my( $x, $y ) =@_;
# 第1引数に連想配列のリファレンスを指定、
# 第2引数にパッケージ名を指定
bless { pos=>[$x, $y] }, $class;
}
# Circleのインスタンスメソッド
sub position{
my $self = shift;
if ( @_ ){
$self->{pos}[0] = @_[0];
$self->{pos}[1] = @_[1];
}
return @{ $self->{pos} };
}
package main;
my $circle = new Circle;
参考:2001/02/18(日)12時56分21秒