Now, Perl5 and threading... that's not a good combination. Perl programmers habitually use a lot of side effects. Any time someone writes code like $x =~ s/a/o/ the parallelism goes away (maybe). To write a parallel program, every part of it has to be written with parallelism in mind. That sounds fine, except that most CPAN modules aren't written like that, so each one has to be inspected by hand.
And as someone noted above: even reading a perl variable can change it, and that's not counting what happens if someone hands you a list of Tie:: variables or objects or something like that...
In Scheme, all I have to do is signal that a part of my code has no side effects and then my macros can do things like parallelise all the arguments to each function call*. I don't have to think about it any further.
*I'm not saying that's a good idea, I'm just saying I can do it...
I didn't believe in evil until I dated it.