[Petal] Bug report

William McKee william@knowmad.com
Thu, 15 Aug 2002 09:23:59 -0400


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

Hi Jean-Michel,

Another bug example for the string modifier is attached. Can you look at 
this today and give me an idea of where to look to fix the problem? I've 
compared the canonicalized code to the cached code. The canonicalized code 
looks correct but it does not get correctly generated. I'm guessing the 
Petal::Hash::String and friends get called from CodeGenerator. Is that 
correct? 

I looked at these modules last night and suspect the problem is with the 
regex's. However, these regex's are a bit beyond my level of 
understanding. If you could point me in the right direction, I'd be glad 
to do some more debugging.

Thanks,
William



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



--Message-Boundary-2705
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/;

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


my $hash = {
	error_message => "Kilroy was Here",
	first_name => "William",
	last_name => "McKee",
	email => 'william@knowmad.com',
	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',
					},
				],
};
my $html = $template->process($hash);
print "Content-type: text/html\n\n";
print $html;

--Message-Boundary-2705
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:  15 Aug 2002, 2:12
     Size:  5229 bytes.
     Type:  Unknown

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

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLT8NCiMg
ICAgIFRlbXBsYXRlOiB0ZXN0LnRtcGwNCiMgICAgICBDcmVhdGVkOiAwNy0yMy0yMDAyDQoj
ICAgICBNb2RpZmllZDogMDgtMTQtMjAwMg0KIyAgICAgICBBdXRob3I6IHdsbQ0KIyAgRGVz
Y3JpcHRpb246IFRlbXBsYXRlIHRvIGRvIHRlcnJpYmxlIHRoaW5ncyB0byB0ZXN0IFBldGFs
IHRlbXBsYXRlIGxhbmd1YWdlLg0KLS0+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1cz
Qy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIg0KICAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCg0KPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICA8aGVhZD4NCiAgICA8
bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkhUTUwgVGlkeSBmb3IgV2luZG93cyAo
dmVycyAxc3QgSmFudWFyeSAyMDAyKSwgc2VlIHd3dy53My5vcmciIC8+DQoNCiAgICA8dGl0
bGU+UGV0YWwgU3RyZXNzIFRlc3QgVGVtcGxhdGU8L3RpdGxlPg0KICA8L2hlYWQ+DQogIDwh
LS0/IDw/cGV0YWw6aW5jbHVkZSBmaWxlPSJpbmNsdWRlcy9oZWFkZXIudG1wbCI/PiAtLT4N
Cg0KICA8Ym9keT4NCiAgICA8aDM+VGhlIHRhZ3M6PC9oMz4NCg0KICAgIDx1bD4NCiAgICAg
IDxsaT5lcnJvcl9tZXNzYWdlOiA8c3BhbiBwZXRhbDpjb250ZW50PSJlcnJvcl9tZXNzYWdl
Ij5FcnJvcjwvc3Bhbj48L2xpPg0KDQogICAgICA8bGk+Zmlyc3RfbmFtZTogPHNwYW4gcGV0
YWw6Y29udGVudD0iZmlyc3RfbmFtZSI+Rmlyc3Q8L3NwYW4+PC9saT4NCg0KICAgICAgPGxp
Pmxhc3RfbmFtZTogPHNwYW4gcGV0YWw6Y29udGVudD0ibGFzdF9uYW1lIj5MYXN0PC9zcGFu
PjwvbGk+DQoNCiAgICAgIDxsaT5lbWFpbDogPHNwYW4gcGV0YWw6Y29udGVudD0iZW1haWwi
PkVtYWlsPC9zcGFuPjwvbGk+DQoNCiAgICAgIDxsaT4NCiAgICAgICAgU3R1ZGVudHMgTGlz
dDxiciAvPg0KICAgICAgICAgDQoNCiAgICAgICAgPHVsIHBldGFsOnJlcGVhdD0ic3R1ZGVu
dCBzdHVkZW50cyI+DQogICAgICAgICAgPGxpPjw/cGV0YWw6dmFyIG5hbWU9ImVuY29kZTog
c3R1ZGVudC5maXJzdF9uYW1lIj8+DQogICAgICAgICAgPD9wZXRhbDp2YXIgbmFtZT0iZW5j
b2RlOiBzdHVkZW50Lmxhc3RfbmFtZSI/Pg0KICAgICAgICAgIC0gPD9wZXRhbDp2YXIgbmFt
ZT0iZW5jb2RlOiBzdHVkZW50LmVtYWlsIj8+DQogICAgICAgICAgPC9saT4NCiAgICAgICAg
PC91bD4NCiAgICAgIDwvbGk+DQogICAgPC91bD4NCiAgICA8aHIgc2l6ZT0iOSIgd2lkdGg9
Ijk1JSIgLz4NCg0KCTxoMz5UaGUgTm9uLVdvcmtpbmcgVGVzdHM8L2gzPg0KDQoJPGg0PlN0
cmluZyBtb2RpZmllciBlcnJvciBJSTwvaDQ+DQoJPHA+VGhpcyBleGFtcGxlIGlsbHVzdHJh
dGVzIGhvdyB0aGUgX19jb3VudF9fIHZhbHVlIGlzIG5vdCBiZWluZyBwcm9wZXJseSBoYW5k
bGVkIGluIHN0cmluZyBzdGF0ZW1lbnRzLiBJdCBhbHNvIHNob3dzIGhvdyB0aGUgbmFtZSBh
dHRyaWJ1dGUgaXMgbm90IGJlaW5nIHByb3Blcmx5IGJ1aWx0IGluIGFuIGlucHV0IGVsZW1l
bnQgYXMgd2VsbC48L3A+DQoJPHVsIHBldGFsOnJlcGVhdD0ic3R1ZGVudCBzdHVkZW50cyI+
DQoJICA8bGk+PD9wZXRhbDp2YXIgbmFtZT0ic3RyaW5nOiRfX2NvdW50X18gLSAkZW5jb2Rl
OnN0dWRlbnQuZmlyc3RfbmFtZSI/Pg0KCSAgPD9wZXRhbDp2YXIgbmFtZT0iZW5jb2RlOiBz
dHVkZW50Lmxhc3RfbmFtZSI/Pg0KCSAgLSA8P3BldGFsOnZhciBuYW1lPSJlbmNvZGU6IHN0
dWRlbnQuZW1haWwiPz4gLQ0KCSAgPGlucHV0IHBldGFsOmF0dHI9Im5hbWUgc3RyaW5nOmZp
cnN0X25hbWUke19fY291bnRfX30iIHBldGFsOmF0dHI9InZhbHVlIHN0dWRlbnQuZmlyc3Rf
bmFtZSIgdHlwZT0ic3RyaW5nIiAvPg0KCSAgPC9saT4NCgk8L3VsPg0KDQoNCgk8aDQ+UmV3
cml0ZSBlcnJvcjwvaDQ+DQoJPHA+VGhpcyBleGFtcGxlIHNob3dzIGhvdyBQZXRhbCBpcyBj
aGFuZ2luZyBzb21lIEhUTUwgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGl0cyBvdXRwdXQu
IEluIHRoaXMgZXhhbXBsZSwgJm5ic3A7IHZhbHVlcyBhcmUgY2hhbmdlZCB0byByZWFsIHNw
YWNlcyB3aGljaCBpcyBub3QgdGhlIGRlc2lyZWQgcmVzdWx0IHdoZW4gY3JlYXRpbmcgWEhU
TUwgb3V0cHV0LiBJIGJ1aWx0IHRoaXMgYXMgYSB0YWJsZSB0byB0cnkgdG8gcmVwZWF0IGEg
cHJvYmxlbSBJIHNhdyB3aGVyZSBhZGRpbmcgJmFtcDtuYnNwOyBhdHRyaWJ1dGVzIHdhcyBj
YXVzaW5nIFBldGFsIHRvIGFkZCBhbiBleHRyYSByb3cuIEl0J3MgcHJvYmFibHkgYSBwcm9i
bGVtIHdpdGggbXkgb3RoZXIgdGVtcGxhdGUuPC9wPg0KCTx0YWJsZSBib3JkZXI9IjEiPg0K
CQk8dHI+DQoJCQk8dGQ+Q29sdW1uIDE8L3RkPg0KCQkJPHRkPkNvbHVtbiAyPC90ZD4NCgkJ
PC90cj4NCgkJPHRyPg0KCQkJPHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJCdXR0b24gMSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9ImJ1dHRv
biIgdmFsdWU9IkJ1dHRvbiAyIj48L3RkPg0KCQk8L3RyPg0KCTwvdGFibGU+DQoNCiAgICA8
IS0tPw0KICAgIDxwPiZuYnNwOzwvcD4NCiAgICA8aHIgc2l6ZT0iOSIgd2lkdGg9Ijk1JSI+
DQoNCiAgICA8aDM+VGhlIFdvcmtpbmcgVGVzdHM8L2gzPg0KDQogICAgPHA+U3RyaW5nIG1v
ZGlmaWVyIGVycm9yPC9wPg0KDQogICAgPHA+PGEgcGV0YWw6YXR0cj0iaHJlZiBzdHJpbmc6
dGVzdC5jZ2k/cm09ZWRpdF9jb2FjaCZhbXA7Zm49JGZpcnN0X25hbWUiPjw/cGV0YWw6dmFy
IG5hbWU9ImVuY29kZTogZmlyc3RfbmFtZSI/Pg0KICAgICA8P3BldGFsOnZhciBuYW1lPSJl
bmNvZGU6IGxhc3RfbmFtZSI/Pg0KICAgIDwvYT48L3A+DQoNCiAgICA8cD48YSBwZXRhbDph
dHRyPSJocmVmIHN0cmluZzptYWlsdG86Ly8kZW1haWwiPjxzcGFuIHBldGFsOmNvbnRlbnQ9
ImVuY29kZTogZW1haWwiPkVtYWlsPC9zcGFuPjwvYT48L3A+DQoNCg0KICAgIDxwPlN0YWNr
ZWQgcGV0YWwgdGFnczwvcD4NCiAgICA8cCBjbGFzcz0iZXJyb3IiIHBldGFsOmlmPSJlcnJv
cl9tZXNzYWdlIiBwZXRhbDpjb250ZW50PSJlcnJvcl9tZXNzYWdlIj5FcnJvcjwvcD4NCg0K
ICAgIDxociBzaXplPSI1IiB3aWR0aD0iNzUlIj4NCg0KICAgIDxwPjEuIEEgdGFnIHdpdGhp
biBhbiBodG1sIHRhZyBwcm9wZXJ0eSBkb2Vzbid0IHdvcmssIGluIHNvbWUgY2FzZXMuIFdv
cmtzIGlmIHRoZXJlIGlzIG5vIGluY2x1ZGUgdGFnIGFib3ZlIGl0LiBEb2VzIG5vdCB3b3Jr
IGlmIHRoZXJlIGlzIGFuIGluY2x1ZGUgdGFnIGFib3ZlIGl0Lg0KICAgIDxiciAvPg0KICAg
IDxhIGhyZWY9Im1haWx0bzo8P3BldGFsOnZhciBuYW1lPSJlbWFpbCI/PiI+RW1haWw8L2E+
DQogICAgPC9wPg0KDQogICAgPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0KDQogICAgPHA+
Mi4gVHdvIHRhZ3MgaW4gYSByb3cgd2lsbCBvbmx5IHNob3cgdGhlIGZpcnN0LCBvciBub3Ro
aW5nIGF0IGFsbC4gSSdtIG5vdCBzdXJlIHdoeSB0aGlzIGZvcm1hdCBpc24ndCB3b3JraW5n
IGF0IGFsbCBpbiB0aGlzIHRlc3QgdGVtcGxhdGUuIEl0IGRvZXMgd29yayBpbiBhbm90aGVy
IG9mIG15IHRlbXBsYXRlcy4gUGVyaGFwcyBpdCBpcyBkdWUgdG8gdGhlIGVycm9yIGluIHRo
ZSBhYm92ZSB0YWcuIENvbW1lbnRpbmcgb3V0IHRoZSBhYm92ZSB0YWcgZG9lc24ndCBzZWVt
IHRvIG1ha2UgYW55IGRpZmZlcmVuY2UsIHRob3VnaC4gRG8gdGFncyBpbnNpZGUgb2YgY29t
bWVudHMgZ2V0IGV4ZWN1dGVkPw0KICAgIDxiciAvPg0KICAgIDw/cGV0YWw6dmFyIG5hbWU9
ImVuY29kZTogZmlyc3RfbmFtZSI/PiA8YnIgLz4NCiAgICA8P3BldGFsOnZhciBuYW1lPSJl
bmNvZGU6IGZpcnN0X25hbWUiPz4gPD9wZXRhbDp2YXIgbmFtZT0iZW5jb2RlOiBsYXN0X25h
bWUiPz4NCiAgICA8L3A+DQoNCiAgICA8aHIgc2l6ZT0iNSIgd2lkdGg9Ijc1JSI+DQoNCiAg
ICA8cD4zLiBJbmNsdWRlcyBkb24ndCBhbHdheXMgd29yay4gVHJ5IG1vdmluZyBvbmUgb2Yg
dGhlIHRhZ3MgdG8gdGhlIHRvcCBhbmQgc2VlIHRoZSByZXN1bHRzLiBSYXRoZXIgY3VyaW91
cy4uLiBJZiB5b3UgbW92ZSB0aGUgZm9vdGVyIHRvIHRoZSB0b3AsIHlvdSdsbCBzZWUgdGhh
dCBpdCBnZXRzIHNob3duIHR3aWNlIGlmIHlvdSBoYXZlIDIgZm9vdGVyIGluY2x1ZGVzIHN0
YXRlbWVudHMgZm9sbG93aW5nIGl0OyBpZiB5b3UgcmVtb3ZlIHRoZSBsYXN0IG9uZSBqdXN0
IGFib3ZlIHRoZSAvYm9keSB0YWcsIHlvdSdsbCBzZWUgdGhlIG9uZSBhZnRlciBoZWFkZXIg
aXNuJ3Qgd29ya2luZywgYnV0IGZ1cnRoZXIgb25lcyBkby4gVGhlcmUgaXMgYXBwYXJlbnRs
eSBzb21ldGhpbmcgaW4gdGhlIGhlYWRlci50bXBsIGRvY3VtZW50IHdoaWNoIGlzIGNhdXNp
bmcgUGV0YWwgdG8gbm90IHBlcmZvcm0gdGhlIG5leHQgaW5jbHVkZXMuIEluIGZhY3QsIHlv
dSBjYW4ga2VlcCBhZGRpbmcgZm9vdGVyIGluY2x1ZGVzIGFuZCBnZXQgbW9yZSBhbmQgbW9y
ZSByZXN1bHRzIGFzIGV4cGVjdGVkLg0KICAgIDxiciAvPg0KICAgIDw/cGV0YWw6aW5jbHVk
ZSBmaWxlPSJpbmNsdWRlcy9oZWFkZXIudG1wbCI/Pg0KICAgIDxwPlRoaXMgaW5jbHVkZSB3
b24ndCBnZXQgZGlzcGxheWVkPC9wPg0KICAgIDw/cGV0YWw6aW5jbHVkZSBmaWxlPSJpbmNs
dWRlcy9mb290ZXIudG1wbCI/Pg0KDQogICAgPGhyIHNpemU9IjUiIHdpZHRoPSI3NSUiPg0K
DQogICAgPHA+Q3JlYXRpbmcgYSBsaW5rPC9wPg0KICAgICAgICA8dWwgcGV0YWw6cmVwZWF0
PSJzdHVkZW50IHN0dWRlbnRzIj4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPjw/cGV0
YWw6dmFyIG5hbWU9ImVuY29kZTogc3R1ZGVudC5maXJzdF9uYW1lIj8+IDw/cGV0YWw6dmFy
IG5hbWU9ImVuY29kZTogc3R1ZGVudC5sYXN0X25hbWUiPz4gLSA8P3BldGFsOnZhciBuYW1l
PSJlbmNvZGU6IHN0dWRlbnQuZW1haWwiPz48L2E+PC9saT4NCiAgICAgICAgPC91bD4NCg0K
ICAgIDxociBzaXplPSI1IiB3aWR0aD0iNzUlIj4NCg0KICAgIDxoMz5FbmQgVGVzdHM8L2gz
Pg0KDQogICAgPD9wZXRhbDppbmNsdWRlIGZpbGU9ImluY2x1ZGVzL2Zvb3Rlci50bXBsIiB0
YWludD0iMSI/Pg0KDQogICAgLS0+DQogIDwvYm9keT4NCjwvaHRtbD4NCg0K

--Message-Boundary-2705--