For linux there is Linux::Inotify2 it interfaces with a kernel-level event notification subsystem. A potential multiplatform solution is File::Monitor a quick look at that module suggests you need to call a scan() method manually for polling.
Comment on Re: Multiplatform event handling module?
I know you didn't mention Win32, but this looks like an equivalent mechanism on windows. I don't think there's a direct perl interface to this, though it should be fairly straightforward to implement.