I would walk out the door if I thought it would take me more than an hour.
Can't say I blame you. We hope/expect people to finish in an hour or less (when the first test was developed, I understand that the consultant who was the first to take it got done in about 40 minutes). But you can have 2.5 hours, in case you're having a bad brain day, or it's been a while since you've written Perl, or whatever. I wouldn't want to give (or take) a test that took that much effort, either; at that point it's not a test, it's consulting!
My style of interviewing is a verbal test and discussion. It is very informal and allows for the answer to be presented in any way they feel comfortable (verbally, written, long explanation, or short answer).
This is all I've ever done at past jobs, and I thought it worked well enough. And any candidate who comes in for an interview will have this sort of opportunity, as well.