2011-11-04 107 views
1

如果我有一个数据成员在perl类(Myclass)中说“dt”。我创建了两个类“obj1”和“obj2”的对象。我使用obj1将“dt”设置为“2”。如果我访问通过“OBJ 2”,“DT”,我应该得到的2在不同的perl对象之间共享数据

use Myclass; 

my $obj1 = new Myclass; 
my $obj2 = new Myclass; 

$obj1->{dt} = 2; 

print $obj2->{dt}; // This should print "2" 

如何实现的类来实现这个“DT”的价值?

+0

你为什么要这么做?你可能想通过类变量来实现这一点。 – aartist

回答

1

使用our关键字,这将有包范围:

package Myclass; 

use strict; 
use warnings; 

our $dt; 

sub new { 
    my $class = shift; 
    my $self = {}; 
    bless $self, $class 
} 

sub dt { # Implement getter/setter 

    shift;    # Pulls object off @_ (ignores calling class) 
    $dt = shift if @_; # If argument provided, sets 'dt' to it 
    return $dt;   # In both cases (getter/setter), returns current $dt 
} 

1; 

然后:

use strict; 
use warnings; 
use feature 'say'; 
use Myclass; 


my $obj1 = Myclass->new; 
my $obj2 = Myclass->new; 

$obj1->dt(2); # Set to 2 via $obj1 

say $obj2->dt; # '2' 

$obj2->dt(5); # Set to 5 via $obj2 

say $obj1->dt; # '5' 
+0

感谢Zaid的快速反应。你能否介绍一些有用的perl设计模式的材料。 – Kallol

+0

@卡洛尔:你应该问,作为另一个问题 – Zaid

+0

对不起,....会创建一个新的线程...谢谢 – Kallol