in reply to Regex and HTML Question

Now first of all I'll calmly say that you should be using the template toolkit or HTML::Template for all you html templates.

Now here is how I would write that snippet of code if I was crazy enough to try to write my own template system.

while (<TEMPLATE>) { s/<~([^~]*)~>/$1/eeg; print; }
This evaluates $1 to produce $varname, then evaluates $varname to produce its contents. I don't see what s///i is doing since I didn't know that any of the characters <>~ could have multiple cases. And because of the [^~] it shouldn't have a problem with multiple instances on the line (yours would read all non >'s on the line including '~', and THEN look for '~>', then backtrack so it would probably still work though but not as quickly or clearly).