Anonymous Monk,
You already have great solutions. I am going to offer up the module
Array::Unique. I have been playing around with closures, references, objects, etc and have been looking for a simple use for tie - and I was about to code this up when I thought better of it and checked CPAN. I haven't looked under the hood, but I am betting it is much better written than I could.
I wouldn't use the module unless you really have a reason not to use the hash approach. Sometimes it is just nice knowing it is in your toolbox.
Cheers - L~R