[Templates] Re: Array to hash with 1 result
Andy Wardley
abw@wardley.org
Tue, 10 Jul 2007 09:10:58 +0100
Ryan Blomberg wrote:
> 1) Don't ever return arrays or hashes from subroutines or else subscribe
> to the "Life is a hack" motto
There's no ambiguity as long as you always return a reference to a list rather
than a list. So do this:
return [$x, $y, $z];
Rather than this:
return ($x, $y, $z);
> 2) Hate perl..
> 3) Love perl...
Perl... you gotta hate/love it. :-)
> 4) Find an excuse to prevent template builders from calling subroutines
> directly ( MVC paradigm ) and act religious about it.
There's nothing wrong or anti-MVC about calling subroutines/methods directly
from a template per se. What matters (if you want to be strict) is that you
don't call methods or subroutines that have external side-effects.
These are "good":
[% user.name %] # Calling a method is OK
[% FOREACH order IN user.orders %] # This one does a DB call - fine!
These are "bad":
[% user.cancel_order %] # The wrong kind of methods
[% user.send_more_money %] # Bad, bad, bad
[% user.run_with_scissors %] # Asking for trouble
If you want a simple rule then it's this:
"Read methods good. Write methods bad"
Cheers
A