#!/usr/bin/perl use strict; use warnings; use Win32::ChangeNotify; #thanks to perlmonks node 366446 use Win32::ReadDirectoryChanges; use Data::Dumper; $|++; my $filter = FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_SIZE ; my $path = "C:\\Photos"; my $rdc = Win32::ReadDirectoryChanges->new(path => $path, subtree => 1, filter => $filter); while (1) { print "Waiting for changes..."; my @results = $rdc->read_changes; print "changed!\n"; my $old_name; while (scalar @results) { my ($action, $filename) = splice(@results, 0, 2); if ($action == FILE_ACTION_ADDED ) { print "ADDED $filename\n"; } elsif ($action == FILE_ACTION_REMOVED) { print "REMOVED $filename\n"; } elsif ($action == FILE_ACTION_MODIFIED) { print "MODIFIED $filename\n"; } elsif ($action == FILE_ACTION_RENAMED_OLD_NAME) { $old_name = $filename; } elsif ($action == FILE_ACTION_RENAMED_NEW_NAME) { print "RENAMED $old_name TO $filename\n"; $old_name = ''; } } }