in reply to concat method inside method call

The comments of almut and other(s) along the lines of "But why...?" should be heeded.
But if you want to press on regardless, here's a slightly different approach:

>perl -wMstrict -le "package BlaBal; sub hi { print 'hi there ', $_[0] }; sub new { my $class = shift; return bless { test123 => \&hi } => $class; } package main; my $obj = BlaBal->new; $obj->{ 'test' . (120+3) }->('sailor'); " hi there sailor

BTW: The statement
    return bless {}, __PACKAGE__;
in the code in Re^4: concat method inside method call does what bless does by default. So the statement
    return bless {};
does the same and is 'prettier'! (However, a constructor so defined cannot be used by derived classes, so this is perhaps a bug, or at least a mis-feature.)