Singletonパターン

以下を参考にさせてもらいました。

$singleton変数はprivateなスコープになる。この辺りを追求するには以下の本がなかなか参考になりました。わりとお堅い感じの本で、途中で挫折しかかりましたが。。

use strict;
use warnings;
{
    package Singleton;
    use strict;
    use warnings;
    my $singleton;
    sub getInstance {
        if(! $singleton){
            print "yes\n";
            my $class = shift;
            my $self = {};
            $singleton = bless $self, $class;
            return $singleton;
        } else {
            print "no\n";
            return $singleton;
        }
    }
}


my $obj01 = Singleton->getInstance();
my $obj02 = Singleton->getInstance();

if($obj01 == $obj02){
    print "It is same instance\n";
} else {
    print "It is not same instance\n";
}