PR
 
関数順 インデックス
目的別 インデックス

構文
 
 bless リファレンス,パッケージ名
 bless リファレンス

返り値
 
 指定したパッケージに所属したリファレンス

説明

  • リファレンスを指定したパッケージ名のパッケージに所属するようにします。
  • パッケージ名を省略すると現在のパッケージに所属するようになります。
  • オブジェクト指向プログラミングを行うために使用されます。

使用例

Personクラスを作成し,設定した名前(Foo!,Bar!)を表示する。その後,Foo!をFoo?に変更する
#!/usr/bin/perl
use strict;
use warnings;

package Person;

# コンストラクタ
sub new {
  my $class = shift;
  my $name = shift;
  
  bless {
    name => $name,
  }, $class;
}

sub name {
  my $self = shift;
  
  $self->{name} = shift if @_;
  return $self->{name};
}

sub print_name {
  my $self = shift;
  
  print "name: ", $self->name, "\n";
}

package Main;

my $foo = Person->new('Foo!');
my $bar = Person->new('Bar!');

$foo->print_name;
$bar->print_name;
print "\n";

$foo->name('Foo?');
$foo->print_name;
print "\n";

my $foo_name = $foo->name;
print $foo_name, "\n";
Personクラスを作成し,設定した名前(Foo!, Bar!)を表示する。その後Foo!をFoo?に変更する(Mooseというモジュールを使うとblessを使う方法よりもすっきりとクラスを作成できる)
#!/usr/bin/perl
use strict;
use warnings;

package Person;
use Moose;

has 'name' => (isa => 'Str', is => 'rw'); 

sub print_name {
  my $self = shift;
  
  print "name: ", $self->name, "\n";
}

package Main;

my $foo = Person->new(name => 'Foo!');
my $bar = Person->new(name => 'Bar!');

$foo->print_name;
$bar->print_name;
print "\n";

$foo->name('Foo?');
$foo->print_name;
print "\n";

my $foo_name = $foo->name;
print $foo_name, "\n";