For tasks like you described my preferred way is to use
incron. That's not really a Perl solution, however you can call any program (perl also) from the incrontab, and at least you don't need to write your own daemon. Like
Corion's first suggestion above it uses Linux Inotify and gives you a cron-like interface for any filesystem event.