Sounds like a problem where PROLOG could shine...
As far as I remember writing the data as predicate will be all you'll have to do, to let Prolog "find" the solution(s)
thanx to unification and backtracking...
IMHO, There are really few problems where PROLOG is the right tool, this one is one of them...
(Maybe those modules could help)
"Only Bad Coders Code Badly In Perl" (OBC2BIP)
May be OT (Re: Solve Einstein's problem with perl?!)
I tried doing a similar puzzle with Prolog. Formulating it in Prolog took longer than for my wife to do it with graph paper. I suspect I could have done it with pencil and propositional calculus quicker; I had previously done another that way.
The final constraint
None of the 5 persons likes the same drink or cigarrete best or has the same pet as one of his neighbours.
is both the most unrealisitic (wrto Real World) and the one that is hardest to express in Prolog or other LP paradigms.
A reduction-based theorem-prover (as opposed to the unification based one that makes Prolog go) might have a better chance at meeting the rec.puzzles definition of "solving", as opposed to trying by exhaustion.