in reply to Object factories

You might give them all a common package prefix and put the mapped name in a package variable. You can then grep that prefix package's symbol table. Consider:
#!/usr/bin/perl -w package Helper::X; { no warnings 'once'; $ACTION = 'foo'; } package Helper::Y; { no warnings 'once'; $ACTION = 'bar'; } package Helper::Z; { no warnings 'once'; $ACTION = 'baz'; } package main; use strict; print map ${$Helper::{$_}->{ACTION}} . " => Helper::$_\n", grep /::\z/, keys %Helper::; __END__ baz => Helper::Z:: foo => Helper::X:: bar => Helper::Y::
Update: added Helper:: to the output. Note: be sure, of course, not to put any packages that don't contain a helper class under the Helper:: namespace.

Makeshifts last the longest.