use Time::HiRes 'sleep'; use Win32::MediaPlayer; sub sound_play { my $winmm = Win32::MediaPlayer->new(); $winmm->load($alarm_sound); $winmm->play(); my $pos = 0; (-$pos + ($pos = $winmm->pos)) or return while sleep 0.1; }