Why shouldn't the Perl script in question just kill itself ?
For that you can use threads.
I.e. use threads (or forks; threads work on any system), create a thread which just waits for the given timeout to expire, and when it expires, it calls built-in Perl 'kill' function (see perldoc -f kill) with PID of the script (the $$ variable).
The other thread will be the script proper itself, i.e. it will do the useful job.
Read about threads here: http://perldoc.perl.org/threads.html
And about forks: http://search.cpan.org/~rybskej/forks-0.34/lib/forks.pm
If you want cross-platform, as I said, you need threads and not forks.