[Templates] isolating "USE DBI" in single common file?
Mark Anderson
mda@discerning.com
Mon, 06 Oct 2003 02:38:45 -0700
I just started using TT, so I'm probably missing something basic....
If I put this in a single file:
[% USE DBI('DBI:CSV:f_dir=./tables;') %]
[% FOREACH row = DBI.query('SELECT * FROM tablename ORDER BY sortorder') %]
...
then i get the output i want.
but i don't want to have to have the "USE DBI" line in every individual
template file.
rather, i'd like to be able to INCLUDE or PROCESS a file like this:
[%INCLUDE common]
[% FOREACH row = DBI.query('SELECT * FROM tablename ORDER BY sortorder') %]
...
where file "common" has the line:
[% USE DBI('DBI:CSV:f_dir=./tables;') %]
but that doesn't work. i get the console warning:
Use of uninitialized value in join or string at /Library/Perl/darwin-thread-multi/DBI.pm line 1273.
and no rows are found.
However, if I put this in "common":
[% USE d = DBI('DBI:CSV:f_dir=./tables;') %]
and this in the template:
[%INCLUDE common]
[% FOREACH row = d.query('SELECT * FROM tablename ORDER BY sortorder') %]
...
Then it works.
Could someone explain what USE and SET do when they are used
across INCLUDE/PROCESS, which explains this behavior?
-mda