http://www.perlmonks.org?node_id=779304


in reply to DBI, $dbh, and subroutines

I'm an advocate of DRY, passing it around increases the error probability , e.g. typos.

OTOH globals tend to have a problem, if the line distance between creation and usage gets to big, or generally if scope and context are not easy to oversee.

I'd use a block scope to simulate an object², the "global" is used like a class-attribute.

{ my $global="whatever"; sub method1 { ...; foo($global); ... } sub method2 { ...; bar($global); ... } sub ... }

Closures are in most simple cases more elegant than objects, especially in perl¹!

(they just can't inherit, but that's not a "simple" case anymore).

Cheers Rolf

UPDATES:

(¹) just compare to grandfathers lightweight object! No blessing, no $self ...

(²) "encapsulation" to be more precise