Meinst du das binden derselben Variable mehrmals an die gleiche Klasse? Klar kriegt man da unterschiedliche Instanzen.
$ perl -MDevel::Peek -e'
use Tie::Hash::NamedCapture;
Dump tie %h, "Tie::Hash::NamedCapture";
Dump tie %h, "Tie::Hash::NamedCapture";
'
SV = IV(0x744218) at 0x744220
REFCNT = 2
FLAGS = (TEMP,ROK)
RV = 0x79d8c8
SV = PVMG(0x794660) at 0x79d8c8
REFCNT = 1
FLAGS = (PADMY,OBJECT,IOK,pIOK)
IV = 256
NV = 0
PV = 0
STASH = 0x75b460 "Tie::Hash::NamedCapture"
SV = IV(0x75b938) at 0x75b940
REFCNT = 2
FLAGS = (TEMP,ROK)
RV = 0x744430
SV = PVMG(0x794690) at 0x744430
REFCNT = 1
FLAGS = (PADMY,OBJECT,IOK,pIOK)
IV = 256
NV = 0
PV = 0
STASH = 0x75b460 "Tie::Hash::NamedCapture"
Wenn das ein Konsument deiner Klasse macht, ist das ein Programmierfehler und nicht anders zu sehen als $i = C->new; $i = C->new;. Dokumentiere dies unter einer Überschrift "Pitfalls", wenn du magst. AFAICS helfen Singletonmechanismen hier nicht. Vom gewaltsamen Herummurksen in den Eingeweiden von Perl zur Unterbindung dieses Fehlerfalls rate ich ab, die Risiken sind immer nicht absehbar und stehen nicht im Verhältnis zum Nutzen.