[Petal] A structure bug

William McKee william@knowmad.com
Fri, 4 Oct 2002 23:25:12 -0400


--Message-Boundary-29133
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

Hi Jean-Michel,

Well, it appears that there is a problem with the structure modifer in the 
recent releases of Petal. I was using it successfully with 0.72 but now 
it's no longer working. I have included the usual test files with this 
email.

BTW, I looked in the tests folder to see if I could find an existing test 
to see about debugging it. I couldn't find a test for the structure 
modifier. I wish I had the time and ability to better understand your code 
and give you patches instead of reports. It's a level or two above my 
present skills, though <g>.

Thanks,
William

-- 
 Lead Developer
 Knowmad Services Inc. || Internet Applications & Database Integration
 http://www.knowmad.com
 


--Message-Boundary-29133
Content-type: text/plain; charset=US-ASCII
Content-disposition: inline
Content-description: Attachment information.

The following section of this message contains a file attachment
prepared for transmission using the Internet MIME message format.
If you are using Pegasus Mail, or any another MIME-compliant system,
you should be able to save it or view it from within your mailer.
If you cannot, please ask your system administrator for assistance.

   ---- File information -----------
     File:  test.tmpl
     Date:  4 Oct 2002, 23:35
     Size:  6951 bytes.
     Type:  Unknown

--Message-Boundary-29133
Content-type: Application/Octet-stream; name="test.tmpl"; type=Unknown
Content-disposition: attachment; filename="test.tmpl"
Content-transfer-encoding: BASE64

PCEtLT8NCiMgICAgIFRlbXBsYXRlOiB0ZXN0LnRtcGwNCiMgICAgICBDcmVhdGVkOiAwNy0y
My0yMDAyDQojICAgICBNb2RpZmllZDogMTAtMDQtMjAwMg0KIyAgICAgICBBdXRob3I6IHds
bQ0KIyAgRGVzY3JpcHRpb246IFRlbXBsYXRlIHRvIGRvIHRlcnJpYmxlIHRoaW5ncyB0byB0
ZXN0IFBldGFsIHRlbXBsYXRlIGxhbmd1YWdlLg0KLS0+DQoNCjxodG1sPg0KCTxoZWFkPg0K
CQk8dGl0bGU+UGV0YWwgU3RyZXNzIFRlc3QgVGVtcGxhdGU8L3RpdGxlPg0KCTwvaGVhZD4N
Cgk8IS0tPyA8P3BldGFsOmluY2x1ZGUgZmlsZT0iaW5jbHVkZXMvaGVhZGVyLnRtcGwiPz4g
LS0+DQoNCgk8Ym9keT4NCg0KCQk8aDM+Q3VycmVudCBQZXRhbCB2ZXJzaW9uOiA8c3BhbiBw
ZXRhbDpyZXBsYWNlPSJwZXRhbC92ZXJzaW9uIjwvaDM+DQoNCgkJCTxoMz5UaGUgdGFnczo8
L2gzPg0KDQoJCQk8dWw+DQoJCQkJPGxpPmVycm9yX21lc3NhZ2U6IDxzcGFuIHBldGFsOmNv
bnRlbnQ9ImVycm9yX21lc3NhZ2UiPkVycm9yPC9zcGFuPjwvbGk+DQoNCgkJCQk8bGk+Zmly
c3RfbmFtZTogPHNwYW4gcGV0YWw6Y29udGVudD0iZmlyc3RfbmFtZSI+Rmlyc3Q8L3NwYW4+
PC9saT4NCg0KCQkJCTxsaT5sYXN0X25hbWU6IDxzcGFuIHBldGFsOmNvbnRlbnQ9Imxhc3Rf
bmFtZSI+TGFzdDwvc3Bhbj48L2xpPg0KDQoJCQkJPGxpPmJvb2xlYW46IDxzcGFuIHBldGFs
OmNvbnRlbnQ9ImJvb2xlYW4iPmJvb2xlYW48L3NwYW4+PC9saT4NCg0KCQkJCTxsaT5wZ19i
b29sZWFuOiA8c3BhbiBwZXRhbDpjb250ZW50PSJwZ19ib29sZWFuIj5wZ19ib29sZWFuPC9z
cGFuPjwvbGk+DQoNCgkJCQk8bGk+cGdfYm9vbGVhbl9mYWxzZTogPHNwYW4gcGV0YWw6Y29u
dGVudD0icGdfYm9vbGVhbl9mYWxzZSI+cGdfYm9vbGVhbl9mYWxzZTwvc3Bhbj48L2xpPg0K
DQoJCQkJPGxpPmVtYWlsOiA8c3BhbiBwZXRhbDpjb250ZW50PSJlbWFpbCI+RW1haWw8L3Nw
YW4+PC9saT4NCg0KCQkJCTxsaT4NCgkJCQlTdHVkZW50cyBMaXN0PGJyIC8+DQoJCQkJPHVs
PjxsaSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiPiBOYW1lIC0gRW1haWw8L2xpPjwvdWw+
DQoNCgkJCQk8dWwgcGV0YWw6cmVwZWF0PSJzdHVkZW50IHN0dWRlbnRzIj4NCgkJCQkJPGxp
Pjw/cGV0YWw6dmFyIG5hbWU9ImVuY29kZTogc3R1ZGVudC5maXJzdF9uYW1lIj8+DQoJCQkJ
CTw/cGV0YWw6dmFyIG5hbWU9ImVuY29kZTogc3R1ZGVudC5sYXN0X25hbWUiPz4NCgkJCQkJ
LSA8P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0dWRlbnQuZW1haWwiPz4NCgkJCQkJPC9s
aT4NCgkJCQk8L3VsPg0KCQkJCTwvbGk+DQoJCQk8L3VsPg0KCQkJPGhyIHNpemU9IjkiIHdp
ZHRoPSI5NSUiIC8+DQoNCgkJCTxoMz5UaGUgTm9uLVdvcmtpbmcgVGVzdHM8L2gzPg0KDQoJ
CQk8aDQ+U3RydWN0dXJlIG1vZGlmaWVyIGVycm9yPC9oND4NCgkJCTxwPlRoaXMgZXhhbXBs
ZSBzaG93cyBob3cgUGV0YWwgaXMgbm90IG91dHB1dHRpbmcgdmFyaWFibGVzIHRoYXQgdXNl
IHRoZSBzdHJ1Y3R1cmUgbW9kaWZpZXIuIFRoZSBmaXJzdCBwYXJhZ3JhcGggb3V0cHV0cyB0
aGUgdmFsdWUgZGlyZWN0b3J5IHdoZXJlYXMgdGhlIHNlY29uZCB1c2VzIHRoZSBzdHJ1Y3R1
cmUgbW9kaWZpZXIuPC9wPg0KCQkJPG9sPg0KCQkJCTxsaT48cCBwZXRhbDpyZXBsYWNlPSJo
dG1sX3N0cmluZyI+PC9wPjwvbGk+DQoJCQkJPGxpPjxwIHBldGFsOnJlcGxhY2U9InN0cnVj
dHVyZTpodG1sX3N0cmluZyI+PC9wPjwvbGk+DQoJCQk8L29sPg0KDQoJCQk8aDQ+S05PV04g
RVJST1IgLSBSZXdyaXRlIGVycm9yPC9oND4NCgkJCTxwPlRoaXMgZXhhbXBsZSBzaG93cyBo
b3cgUGV0YWwgaXMgY2hhbmdpbmcgc29tZSBIVE1MIGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGlu
ZyBpdHMgb3V0cHV0LiBJbiB0aGlzIGV4YW1wbGUsICZuYnNwOyB2YWx1ZXMgYXJlIGNoYW5n
ZWQgdG8gcmVhbCBzcGFjZXMgd2hpY2ggaXMgbm90IHRoZSBkZXNpcmVkIHJlc3VsdCB3aGVu
IGNyZWF0aW5nIFhIVE1MIG91dHB1dC4gSSBidWlsdCB0aGlzIGFzIGEgdGFibGUgdG8gdHJ5
IHRvIHJlcGVhdCBhIHByb2JsZW0gSSBzYXcgd2hlcmUgYWRkaW5nICZhbXA7bmJzcDsgYXR0
cmlidXRlcyB3YXMgY2F1c2luZyBQZXRhbCB0byBhZGQgYW4gZXh0cmEgcm93LiBJdCdzIHBy
b2JhYmx5IGEgcHJvYmxlbSB3aXRoIG15IG90aGVyIHRlbXBsYXRlLjwvcD4NCgkJCTx0YWJs
ZSBib3JkZXI9IjEiPg0KCQkJCTx0cj4NCgkJCQkJPHRkPkNvbHVtbiAxPC90ZD4NCgkJCQkJ
PHRkPkNvbHVtbiAyPC90ZD4NCgkJCQk8L3RyPg0KCQkJCTx0cj4NCgkJCQkJPHRkIGNvbHNw
YW49IjIiPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJCdXR0b24gMSI+Jm5ic3A7Jm5i
c3A7Jm5ic3A7PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkJ1dHRvbiAyIj48L3RkPg0K
CQkJCTwvdHI+DQoJCQk8L3RhYmxlPg0KDQoNCg0KDQoNCg0KCQkJPCEtLT8gVGhlIGZvbGxv
d2luZyB0ZXN0cyBhcmUgd29ya2luZy4gU2V0IFJVTkFMTFRFU1RTIHRvIDEgdG8gcnVuIHRo
ZXNlIC0tPg0KCQkJPD9wZXRhbDppZiBuYW1lPSJhbGx0ZXN0cyI/Pg0KDQoJCQk8cD4mbmJz
cDs8L3A+DQoJCQk8aHIgc2l6ZT0iOSIgd2lkdGg9Ijk1JSI+DQoNCgkJCTxoMz5UaGUgV29y
a2luZyBUZXN0czwvaDM+DQoNCgkJCTxoND5DYW5vbmljYWwgdGFnIGVycm9yIGluIFhIVE1M
IHBhcnNlcjwvaDQ+DQoJCQk8cD5FcnJvcnMgb2NjdXIgd2hlbiB0cnlpbmcgdG8gdXNlIHRo
ZSBjYW5vbmljYWwgZm9ybWF0IGluIHRlbXBsYXRlcyBwYXJzZWQgYnkgdGhlIFhIVE1MIHBh
cnNlci48L3A+DQoJCQk8P3BldGFsOnJlcGVhdCBuYW1lPSJzdHVkZW50IHN0dWRlbnRzIj8+
DQoJCQk8dWw+DQoJCQkJPGxpPjw/cGV0YWw6dmFyIG5hbWU9InN0dWRlbnQuZmlyc3RfbmFt
ZSI/Pg0KCQkJCTw/cGV0YWw6dmFyIG5hbWU9InN0dWRlbnQubGFzdF9uYW1lIj8+DQoJCQkJ
LSA8P3BldGFsOnZhciBuYW1lPSJzdHVkZW50LmVtYWlsIj8+DQoJCQkJPC9saT4NCgkJCTwv
dWw+DQoJCQk8P3BldGFsOmVuZD8+DQoNCg0KCQkJPGg0PlBhcmFtZXRlciByZXdyaXRlIGVy
cm9yczwvaDQ+DQoJCQk8cD5USElTIElTIFNUQU5EQVJEIFhIVE1MIGFuZCB0aHVzIG5vdCBh
IGJ1ZzwvcD4NCgkJCTxwPlBldGFsIHJld3JpdGVzIHBhcmFtZXRlcnMgd2l0aG91dCByZWdh
cmQgdG8gY2FzZS4gVGhpcyBpcyBhIHByb2JsZW0gZm9yIHNvbWUgSmF2YXNjcmlwdCBzY3Jp
cHRzLjwvcD4NCgkJCTxmb3JtPjxpbnB1dCB0eXBlPSJzdHJpbmciIFBBUk09IlBITiIgd0NM
QVNTPSJGb3JtYXRUZXh0IiBzaXplPSIzMCIgbWF4bGVuZ3RoPSI1NSI+PC9mb3JtPg0KCQkJ
PGJyPg0KCQkJPGEgaHJlZj0iIiBvbk1vdXNlT3Zlcj0iYWxlcnQoJ0hpIG1vbScpIj5Nb3Vz
ZSBPdmVyIFRlc3Q8L2E+DQoNCg0KCQkJPGg0PkhUTUwgQ29tbWVudHMgZXJyb3I8L2g0Pg0K
CQkJPHA+VGhpcyBleGFtcGxlIGlsbHVzdHJhdGVzIGhvdyBIVE1MIGNvbW1lbnRzIGdldCBy
ZW1vdmVkIHdoZW4gdXNpbmcgdGhlIFhIVE1ML1hIVE1MIGlucHV0L291dHB1dCBzZXR0aW5n
cyBpbiBQZXRhbC48L3A+DQoJCQk8IS0tIFRoaXMgaXMgYSB0ZXN0LiBJdCB3aWxsIGRpc2Fw
cGVhci4gLS0+DQoNCg0KCQkJPGg0PlBvc3RncmVzIHRydWUvZmFsc2U8L2g0Pg0KCQkJPHA+
VGVzdCB0aGUgbmV3IGhhbmRsZXJzIEkgd3JvdGUuPC9wPg0KCQkJPHVsPg0KCQkJCTxsaT5U
cnVlID0gPHNwYW4gcGV0YWw6Y29udGVudD0icGdfdHJ1ZTogcGdfYm9vbGVhbiI+dDwvc3Bh
bj48L2xpPg0KCQkJCTxsaT5GYWxzZSA9IDxzcGFuIHBldGFsOmNvbnRlbnQ9InBnX2ZhbHNl
OiBwZ19ib29sZWFuX2ZhbHNlIj50PC9zcGFuPjwvbGk+DQoJCQk8L3VsPg0KDQoNCgkJCTxo
ND5TdHJpbmcgbW9kaWZpZXIgZXJyb3IgSUk8L2g0Pg0KCQkJPHA+VGhpcyBleGFtcGxlIGls
bHVzdHJhdGVzIGhvdyB0aGUgX19jb3VudF9fIHZhbHVlIGlzIG5vdCBiZWluZyBwcm9wZXJs
eSBoYW5kbGVkIGluIHN0cmluZyBzdGF0ZW1lbnRzLiBJdCBhbHNvIHNob3dzIGhvdyB0aGUg
bmFtZSBhdHRyaWJ1dGUgaXMgbm90IGJlaW5nIHByb3Blcmx5IGJ1aWx0IGluIGFuIGlucHV0
IGVsZW1lbnQgYXMgd2VsbC48L3A+DQoJCQk8dWwgcGV0YWw6cmVwZWF0PSJzdHVkZW50IHN0
dWRlbnRzIj4NCgkJCQk8bGk+PD9wZXRhbDp2YXIgbmFtZT0ic3RyaW5nOiRfX2NvdW50X18g
LSAkZW5jb2RlOnN0dWRlbnQuZmlyc3RfbmFtZSI/Pg0KCQkJCTw/cGV0YWw6dmFyIG5hbWU9
ImVuY29kZTogc3R1ZGVudC5sYXN0X25hbWUiPz4NCgkJCQktIDw/cGV0YWw6dmFyIG5hbWU9
ImVuY29kZTogc3R1ZGVudC5lbWFpbCI/PiAtDQoJCQkJPGlucHV0IHBldGFsOmF0dHI9Im5h
bWUgc3RyaW5nOmZpcnN0X25hbWUke19fY291bnRfX307IHZhbHVlIHN0dWRlbnQuZmlyc3Rf
bmFtZSIgdHlwZT0ic3RyaW5nIiAvPg0KCQkJCTwvbGk+DQoJCQk8L3VsPg0KDQoNCgkJCTxo
ND5TdHJpbmcgbW9kaWZpZXIgZXJyb3I8L2g0Pg0KDQoJCQk8cD48YSBwZXRhbDphdHRyPSJo
cmVmIHN0cmluZzp0ZXN0LmNnaT9ybT1lZGl0X2NvYWNoJmFtcDtmbj0kZmlyc3RfbmFtZSI+
PD9wZXRhbDp2YXIgbmFtZT0iZW5jb2RlOiBmaXJzdF9uYW1lIj8+DQoJCQkJPD9wZXRhbDp2
YXIgbmFtZT0iZW5jb2RlOiBsYXN0X25hbWUiPz4NCgkJCTwvYT48L3A+DQoNCgkJCTxwPjxh
IHBldGFsOmF0dHI9ImhyZWYgc3RyaW5nOm1haWx0bzovLyRlbWFpbCI+PHNwYW4gcGV0YWw6
Y29udGVudD0iZW5jb2RlOiBlbWFpbCI+RW1haWw8L3NwYW4+PC9hPjwvcD4NCg0KDQoJCQk8
cD5TdGFja2VkIHBldGFsIHRhZ3M8L3A+DQoJCQk8cCBjbGFzcz0iZXJyb3IiIHBldGFsOmlm
PSJlcnJvcl9tZXNzYWdlIiBwZXRhbDpjb250ZW50PSJlcnJvcl9tZXNzYWdlIj5FcnJvcjwv
cD4NCg0KCQkJPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0KDQoJCQk8cD4xLiBBIHRhZyB3
aXRoaW4gYW4gaHRtbCB0YWcgcHJvcGVydHkgZG9lc24ndCB3b3JrLCBpbiBzb21lIGNhc2Vz
LiBXb3JrcyBpZiB0aGVyZSBpcyBubyBpbmNsdWRlIHRhZyBhYm92ZSBpdC4gRG9lcyBub3Qg
d29yayBpZiB0aGVyZSBpcyBhbiBpbmNsdWRlIHRhZyBhYm92ZSBpdC4NCgkJCTxiciAvPg0K
CQkJPGEgaHJlZj0ibWFpbHRvOjw/cGV0YWw6dmFyIG5hbWU9ImVtYWlsIj8+Ij5FbWFpbDwv
YT4NCgkJCTwvcD4NCg0KCQkJPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0KDQoJCQk8cD4y
LiBUd28gdGFncyBpbiBhIHJvdyB3aWxsIG9ubHkgc2hvdyB0aGUgZmlyc3QsIG9yIG5vdGhp
bmcgYXQgYWxsLiBJJ20gbm90IHN1cmUgd2h5IHRoaXMgZm9ybWF0IGlzbid0IHdvcmtpbmcg
YXQgYWxsIGluIHRoaXMgdGVzdCB0ZW1wbGF0ZS4gSXQgZG9lcyB3b3JrIGluIGFub3RoZXIg
b2YgbXkgdGVtcGxhdGVzLiBQZXJoYXBzIGl0IGlzIGR1ZSB0byB0aGUgZXJyb3IgaW4gdGhl
IGFib3ZlIHRhZy4gQ29tbWVudGluZyBvdXQgdGhlIGFib3ZlIHRhZyBkb2Vzbid0IHNlZW0g
dG8gbWFrZSBhbnkgZGlmZmVyZW5jZSwgdGhvdWdoLiBEbyB0YWdzIGluc2lkZSBvZiBjb21t
ZW50cyBnZXQgZXhlY3V0ZWQ/DQoJCQk8YnIgLz4NCgkJCTw/cGV0YWw6dmFyIG5hbWU9ImVu
Y29kZTogZmlyc3RfbmFtZSI/PiA8YnIgLz4NCgkJCTw/cGV0YWw6dmFyIG5hbWU9ImVuY29k
ZTogZmlyc3RfbmFtZSI/PiA8P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IGxhc3RfbmFtZSI/
Pg0KCQkJPC9wPg0KDQoJCQk8aHIgc2l6ZT0iNSIgd2lkdGg9Ijc1JSI+DQoNCgkJCTxwPjMu
IEluY2x1ZGVzIGRvbid0IGFsd2F5cyB3b3JrLiBUcnkgbW92aW5nIG9uZSBvZiB0aGUgdGFn
cyB0byB0aGUgdG9wIGFuZCBzZWUgdGhlIHJlc3VsdHMuIFJhdGhlciBjdXJpb3VzLi4uIElm
IHlvdSBtb3ZlIHRoZSBmb290ZXIgdG8gdGhlIHRvcCwgeW91J2xsIHNlZSB0aGF0IGl0IGdl
dHMgc2hvd24gdHdpY2UgaWYgeW91IGhhdmUgMiBmb290ZXIgaW5jbHVkZXMgc3RhdGVtZW50
cyBmb2xsb3dpbmcgaXQ7IGlmIHlvdSByZW1vdmUgdGhlIGxhc3Qgb25lIGp1c3QgYWJvdmUg
dGhlIC9ib2R5IHRhZywgeW91J2xsIHNlZSB0aGUgb25lIGFmdGVyIGhlYWRlciBpc24ndCB3
b3JraW5nLCBidXQgZnVydGhlciBvbmVzIGRvLiBUaGVyZSBpcyBhcHBhcmVudGx5IHNvbWV0
aGluZyBpbiB0aGUgaGVhZGVyLnRtcGwgZG9jdW1lbnQgd2hpY2ggaXMgY2F1c2luZyBQZXRh
bCB0byBub3QgcGVyZm9ybSB0aGUgbmV4dCBpbmNsdWRlcy4gSW4gZmFjdCwgeW91IGNhbiBr
ZWVwIGFkZGluZyBmb290ZXIgaW5jbHVkZXMgYW5kIGdldCBtb3JlIGFuZCBtb3JlIHJlc3Vs
dHMgYXMgZXhwZWN0ZWQuDQoJCQk8YnIgLz4NCgkJCTw/cGV0YWw6aW5jbHVkZSBmaWxlPSJp
bmNsdWRlcy9oZWFkZXIudG1wbCI/Pg0KCQkJPHA+VGhpcyBpbmNsdWRlIHdvbid0IGdldCBk
aXNwbGF5ZWQ8L3A+DQoJCQk8P3BldGFsOmluY2x1ZGUgZmlsZT0iaW5jbHVkZXMvZm9vdGVy
LnRtcGwiPz4NCg0KCQkJPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0KDQoJCQk8cD5DcmVh
dGluZyBhIGxpbms8L3A+DQoJCQk8dWwgcGV0YWw6cmVwZWF0PSJzdHVkZW50IHN0dWRlbnRz
Ij4NCgkJCQk8bGk+PGEgaHJlZj0iIj48P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0dWRl
bnQuZmlyc3RfbmFtZSI/PiA8P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0dWRlbnQubGFz
dF9uYW1lIj8+IC0gPD9wZXRhbDp2YXIgbmFtZT0iZW5jb2RlOiBzdHVkZW50LmVtYWlsIj8+
PC9hPjwvbGk+DQoJCQk8L3VsPg0KDQoJCQk8aHIgc2l6ZT0iNSIgd2lkdGg9Ijc1JSI+DQoJ
CQk8P3BldGFsOmVuZD8+DQoNCgkJCTwhLS0/DQoJCQk8aDM+RW5kIFRlc3RzPC9oMz4NCg0K
CQkJPD9wZXRhbDppbmNsdWRlIGZpbGU9ImluY2x1ZGVzL2Zvb3Rlci50bXBsIiB0YWludD0i
MSI/Pg0KDQoJCQktLT4NCgkJPC9ib2R5Pg0KCTwvaHRtbD4NCg0K

--Message-Boundary-29133
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Text from file 'test.cgi'

#!/usr/bin/perl
#
use strict;
use Petal;
use CGI::Carp qw/fatalsToBrowser/;
use constant RUNALLTESTS => 1;


# Extend the list of modifiers
$Petal::Hash::MODIFIERS->{pg_true} = 'Petal::Hash::Postgres::TRUE';
$Petal::Hash::MODIFIERS->{pg_false} = 'Petal::Hash::Postgres::FALSE';

$ENV{PATH} = "/bin:/usr/bin";

my $template_file = 'test.tmpl';
$Petal::DISK_CACHE = 0;
$Petal::MEMORY_CACHE = 0;
$Petal::TAINT = 1;
$Petal::BASE_DIR = './';
$Petal::INPUT = "HTML";
#$Petal::INPUT = "XML";
$Petal::OUTPUT = "XHTML";
#$Petal::OUTPUT = "XML";
my $template = new Petal ($template_file);


my $hash = {
	petal => { version => $Petal::VERSION },
	alltests => RUNALLTESTS,
	error_message => "Kilroy was Here",
	first_name => "William",
	last_name => "McKee",
	email => 'william@knowmad.com',
	boolean => '1',
	pg_boolean => 't',
	pg_boolean_false => 'f',
	students => [ { student_id => '1',
					first_name => 'William',
					last_name => 'McKee',
					email => 'william@knowmad.com',
					},
				  { student_id => '2',
					  first_name => 'Elizabeth',
					  last_name => 'McKee',
					  email => 'elizabeth@knowmad.com',
					},
				],
	html_string => '<h1 align="center">Header1 Centered</h1>',
};
my $html = $template->process($hash);
print "Content-type: text/html\n\n";
print $html;


--Message-Boundary-29133--