in reply to passing arguments

Just an observation. grinder's remark about the perils of calling functions with ampersand, such as &foo versus foo() got me thinking "Do people still use ampersand calls?" But I figured that was just me being silly. Of course they don't.

Then, just moments later, I find a living, breathing example. Yikes.

Anyway, the "one parameter" rule is kind of absurd. Sometimes a function needs to know a lot of things to get the job done, sometimes nothing. Any language which strictly mandated One Argument Only is probably stack based anyway, or is just an exercise in programmer abuse.

Passing anonymous hashes around is fine and all, but sometimes it breaks down, and when that happens, it can get really, really bad. What if you want to merge parameters, or filter them? Imagine the pain, the agony, the disgusting things you would have to do.
format_string({foo => 'bar', %$set1, %$set2, format => $set3->{format}});
That seems to be just the tip of the iceberg.

Hash-style parameters, though, are fun. Just look at CGI.