in reply to how long does for(1..$n) take?

Whoa. Careful there. Not only is this wasteful and platform-dependent, but it is also load dependent. If your computter is doing something else in another process, this loop might as well take three hours instead of the intended minute. In ComputerLand, it's good to be precise, so I would recommend alarm(60); for an interruptable process. Don't even bother setting up a signal handler if unneeded. After 60 seconds, the script will crash and burn as intended.

If your thing cannot be interrupted, then keep track of the Time.

while($runningtime<$maxtime) { dosomething(); }
which is still polling (which is generally bad), but at least after you finish that iteration, you'll know whether to quit or not.

Another another option may be to use perlembed to embed an interpreter in a pthread, which is sent an internal signal to finish from another thread after 60 seconds of sleep. The murdered thread can have cleanup handlers installed to ensure that the important stuff got done and now you can finish. I would consider this the most professional way. Good luck!

AgentM Systems nor Nasca Enterprises nor Bone::Easy nor Macperl is responsible for the comments made by AgentM. Remember, you can build any logical system with NOR.