The C/C++ "native" way of doing that is to use a Waitable Timer, APIs CreateWaitableTimer, SetWaitableTimer, etc; or a Timer Queue, CreateTimerQueue and CreateTimerQueueTimer (don't-ya just love those API names). Doesn't appear to be anything on CPAN though (hummmmmm), although
Time::HiRes might help.