In re the hashref vs list argument the motivation forme is that I gain very little from using Perl's parameter prototyping. Indeed we have modules such as Params::Validate because others feel the same way.
Perl is a weakly typed language. It doesn't have type-based method dispatch as Java does. Those want that use a module that helps or roll their own. It doesn't have real type checking at compile time. It barely does at run time. There is no difference between an integer and real or floating point. Despite this people have some elegant math packages in Perl. I admit that if I wanted to do some signal processing I would not reach for Perl to write my Fourier Transform or do spread spectrum analysis (I personally would reach for C, my professor from grad school uses MathCAD). The nice thing is I CAN reach for statistics modules and get a coefficient of variance o a dataset I pull from a database with Perl. Perl is many things to many people. Small changes in syntax to fix things like multiway branching are great. I think not only threading but threadsafe modules for thr major threaded tasks are important. Anything with I/O needs thread safety. Layered IO might be needing this such as IO::Compress::Bzip2. Certainly database interfaces to major dbms: DBI, DBD::Oracle, DBD::Pg, DBD::MySQL etc. Those all have dbms-side treads (SQLite does not its not a separate process) Sent from my BlackBerry® smartphone with Nextel Direct Connect