NAME File::Hotfolder - recursive watch directory for new or modified files SYNOPSIS use File::Hotfolder; # object interface File::Hotfolder->new( watch => '/some/directory', # which directory to watch callback => sub { # what to do with each new/modified file my $path = shift; ... }, delete => 1, # delete each file if callback returns true filter => qr/\.json$/, # only watch selected files print => WATCH_DIR, # show which directories are watched catch => sub { # catch callback errors my ($path, $error) = @_; ... } )->loop; # function interface watch( '/some/directory', callback => sub { say shift } )->loop; # watch a given directory and delete all new or modified files watch( $ARGV[0] // '.', delete => 1, print => DELETE_FILE )->loop; DESCRIPTION This module uses Linux::Inotify2 to recursively watch a directory for new or modified files. A callback is called on each file with its path. Deletions and new subdirectories are not reported but new subdirectories will be watched as well. CONFIGURATION watch Base directory to watch callback Callback for each new or modified file. The callback is not called during a write but after a file has been closed. delete Delete the modified file if a callback returned a true value (disabled by default). fullname Return absolute path names (disabled by default). filter Filter filenames with regular expression before passing to callback. print Print to STDOUT each new directory ("WATCH_DIR"), each file path before callback execution ("FOUND_FILE"), and/or each deletion ("DELETE_FILE"). Also use "CATCH_ERROR" (implying "catch") to print callback errors. catch Error callback for failing callbacks. Disabled by default, so a dying callback will terminate the program. scan First call the callback for all existing files. This does not guarantee that found files have been closed. METHODS loop Watch with a manual event loop. This method never returns. anyevent Watch with AnyEvent. Returns a new AnyEvent watch. inotify Returns the internal Linux::Inotify2 object. SEE ALSO File::ChangeNotify, Filesys::Notify::Simple, AnyEvent::Inotify::Simple AnyEvent rrr-server from File::Rsync::Mirror::Recent COPYRIGHT AND LICENSE Copyright Jakob Voss, 2015- This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.