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

構文
 
 package 名前空間

返り値
 
 なし

説明

  • ブロックやファイルの残り部分などが引数の名前空間に属することを宣言します。
  • 名前空間を分けることで同名のサブルーチンを使用することができます。

使用例

パッケージFooとBarで同名のサブルーチンfooを使用する
#!/usr/bin/perl
use strict;
use warnings;

{
  package Foo;

  my $val = 1;
  
  sub print_val {
    print $val, "\n";
  }
}

{
  package Bar;

  my $val = 2;

  sub print_val {
    print $val, "\n";
  }
}

Foo::print_val();
Bar::print_val();
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";
※blessと組み合わせることでオブジェクト指向プログラミングを行うことができます。