クラス変数

package AA;
use strict;
use warnings;

$AA::var = 'クラス変数'

sub new{bless {},shift}

(略)

↑パッケージに結びつけてることが一目瞭然。外部からは「$AA::var」でアクセス可能

packge AA;
use strict;
use warnings;

use vars qw(var);
$val = 'クラス変数'

sub new{bless {},shift}

(略)

↑usr varsを使う。「$AA::var」でアクセス可能

packge AA;
use strict;
use warnings;

our $var;
$val = 'クラス変数'

sub new{bless {},shift}

(略)

↑our を使う。外部からは「$AA::var」でアクセス可能

packge AA;
use strict;
use warnings;

use constant var => 'クラス変数'

sub new{bless {},shift}

(略)

↑定数にしちゃう。関数になっているので、外部からは「AA::var」もしくは「AA::var()」もしくは「AA->var」でアクセス可能。インスタンス「$aa」を作成し、「$aa->var」としてもOK

{
package AA;
use strict;
use warnings;

sub new{bless {},shift}

my $var = 'クラス変数';
sub var{$var}
(略)
}

↑レキシカル変数。関数になっているので、外部からは「AA::var」もしくは「AA::var()」もしくは「AA->var」でアクセス可能。インスタンス「$aa」を作成すれば、「$aa->var」でもOK。