在不同的perl对象之间共享数据

在不同的perl对象之间共享数据,perl,perl-module,perl-data-structures,Perl,Perl Module,Perl Data Structures,如果我有一个数据成员,在perl类(Myclass)中说“dt”。我已经创建了该类的两个对象,分别是“obj1”和“obj2”。我使用obj1将“dt”设置为“2”。如果通过“obj2”访问“dt”,则“dt”的值应为2 如何实现类来实现这一点???使用我们的关键字,该关键字将包含包范围: package Myclass; use strict; use warnings; our $dt; sub new { my $class = shift; my $self = {

如果我有一个数据成员,在perl类(Myclass)中说“dt”。我已经创建了该类的两个对象,分别是“obj1”和“obj2”。我使用obj1将“dt”设置为“2”。如果通过“obj2”访问“dt”,则“dt”的值应为2


如何实现类来实现这一点???

使用
我们的
关键字,该关键字将包含包范围:

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'

使用
我们的
关键字,它将具有包范围:

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'

谢谢Zaid的快速回复。你能给我介绍一些关于perl设计模式的有用资料吗?谢谢Zaid的快速回复。你能给我介绍一些关于perl设计模式的有用资料吗?你为什么要这样做?您可能希望通过类变量实现这一点。为什么要这样做?您可能希望通过类变量实现这一点。