I'm glad to hear you're still happy with DBIx::Simple.
About the TT issue: While I understand the problem and acknowledge that it is annoying, I strongly believe that this should not be fixed in the numerous modules that happen to be compatible with Template Toolkit, but in Template Toolkit itself. I might release a compatibility package, but I'm not willing to mess with DBIx::Simple itself for this.
I find the name "hash_array" very confusing, by the way. I'd probably call it "array_of_hashes".
The correct solution to this problem, if you want it in DBIx::Simple, is to use your own result class. Untested code follows.
use strict;
package DBIx::Simple::TT;
use base 'DBIx::Simple';
sub connect {
my $self = shift->SUPER::connect(@_);
$self->result_class = 'DBIx::Simple::Result::ForcedScalar';
}
package DBIx::Simple::Result::ForcedScalar;
use base 'DBIx::Simple::Result';
my $stash = \%DBIx::Simple::Result::ForcedScalar::;
our %list_methods;
$list_methods{$_} = 1 for qw(
arrays hashes list flat columns map map_hashes map_arrays
);
for my $method (keys %list_methods) {
$method =~ /^[a-z]\w+$/ or next;
my $supermethod = "SUPER::$method";
$stash->{$method} = sub { scalar shift->$method(@_) };
}
Do you think that this would solve your problem?