http://qs321.pair.com?node_id=283876


in reply to how to permanently monitor a directory

#!/usr/bin/perl use strict; use DB_File; my $base = '/some/dir'; # dir to check my $data = '/some/file.db'; # file name cache my $sleep = 100; # how long to sleep for my $maxtime = 86400; # max time before key removal while (1) { # # we need to tie and untie each time just to be safe due # to file caching and flushing, which sometimes doesnt # happen untill the file has been untied. # If another monk can help here that would be nice. # tie(my %files, 'DB_File', $data, O_RDWR, 0644) or die "Cant tie $data: $!\n"; opendir(BASE, $base) or die "Cant open dir $base: $!\n"; for ( grep(!/^\./, readdir BASE) ) { # avoid . and .. :) if ( $files{$_} ) { $files{$_} = time(); } else { do_something(); $files{$_} = time(); } } closedir(BASE); for ( keys %files ) { # remove the file if it hasnt been around for a week delete($files{$_}) if ($files{$_} >= $maxtime); } untie(%files); sleep $sleep; }

use perl;