2011-11-04 104 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