Одиночка используется когда необходим ровно один экземпляр какого-то класса, доступный для остальных элементов программы.
Два примера реализации:
и тестирование для них:
Два примера реализации:
package Singleton; use strict; use warnings; use feature 'state'; my $singleton = { rand => int(rand(100)) }; sub instance { ref $singleton eq __PACKAGE__ ? $singleton : bless $singleton, shift; } sub instance_with_state { state $singleton = { rand => int(rand(100)) }; ref $singleton eq __PACKAGE__ ? $singleton : bless $singleton, shift; } 1;
и тестирование для них: