The problem is, that crypt has a prototype ($$).
I've met this problem with select: I tried to write select +(undef)x3, 0.4; but that won't work for exactly the same reason. As a solution, you can write a wrapper function: sub cryp{crypt$_[0],$_[1]};cryp +(time)x2;