in reply to Rename a Moo constructor from "new" to "run"

I haven't used Moo in a real project yet. However, I am not sure that "rename" is what you need? That implies that "new" would no longer be valid. Maybe you just need a public method that does the same thing as new (i.e. create an alias to new)? Then in the code call "run" instead of calling "new"?

sub run { my $class = shift; return $class->new( @_ ); }
I don't see a problem with having two names for the method that creates an object, if $object->run(...) is more descriptive than $object->new(...) in the code. But could be that I'm missing some point?

I am curious as to why this thing is an object instead of just a function call? There is considerable overhead in object oriented code. Why pay for something you don't need?

Update: I replied to stevieb instead of to this post. But I figure my questions re: X-Y problem seem valid.