Argh, if you get an exception like this from the Iterator module and you tend to run with Carp::Always it’s probably a heisenbug.  Try turning Carp::Always off and see what happens.  I’m not sure whether this is a bug in a library or a bug in my code but I’ve just wasted a couple of hours because I accidentally left Carp::Always on.

Exception::Class::Base::throw('Iterator::X::User_Code_Error', 'message', ' at lib/site_perl...', 'eval_error', 'Iterator::X::User_Code_Error=HASH(0xa0d3f08)') called atlib/site_perl/5.10.1/Iterator.pm line 236

I should note that both modules are very useful.  It’s just a freak occurrence of the two together in my code that’s caused me a brief issue.  I figured I better document it so hopefully I won’t spend so long the next time I do it.  Actually this code is all running in a catalyst app which might be another factor that’s affecting things.