gaal++, that is quite right. People often forget that class names are just package names, and package names are strings. Which means they can be stored in scalars.
One of the patterns I use a lot is Strategy, in which you typically select (programmatically) between several strategy classes to implement some piece of your application. One of the nice things about Perl is that class names are ordinary objects. So I can do things like this:
use Output::Console;
use Output::Tk;
my $output_strategy = -T STDOUT ? 'Output::Console' : 'Output::Tk';
my $output = $output_strategy->new();
The same principle could be used to shorten long class names.