Perl Singleton Objects

This is a quick introduction to perl Singleton objects. A singleton object is an object that is only instantiated once throughout an application.

Singleton Uses

Singletons can be used for many things. If you only want one database connection for a particular application, or a limited number of connections a singleton database class can handle managing your open connections.

How to implement

The following is an example of how to put together a database object that opens a database connection and returns an existing connection to the caller.This allows your userid/password to be set in a single location as well. You don't have to have every piece of code that accesses the database use userid/password. Just use the DBConnector object and then issue your database calls.
package DBconnector; my $singleton; sub new { my $class = shift; $singleton ||= bless {}, $class; } sub connect { my $self = shift; if (exists $self->{dbh}) { $self->{dbh}; } else { my $connection = "dbi:mysql:host=$self->{host} \ dbname=$self->{name}"; $self->{dbh} = DBI->connect($connection, \ $self->{user},$self->{password}); } }


There are many ways to use singletons. This is just a basic example, but provides what is needed to create a singleton object.