Execute a command when file is changed
This script executes a command when a file is changed.
#!/usr/bin/perl
# Copyright (c) 2003 Stanislav Lechev [AngelFire].
# License: WTFPL
use strict;
# watch for new insert in mysql table
my $file='/usr/local/mysql3/data/database/table.MYD';
my $c=0;
my $o=0;
my $prog='';
my $skip1=0;
my $is1=1;
if ($#ARGV<0) {
print "usage: $0 [-s] <prog> <prog_arg> <prog_arg>\n";
print " -s: skip 1st change (when $0 runs)\n\n";
exit(1);
}
for (my $i=0; $i<=$#ARGV; $i++) {
if (($i == 0) && ($ARGV[$i] =~ /^-s$/)) {
$skip1++;
next;
}
$prog.=$ARGV[$i]." ";
}
while (1) {
$c=(stat($file))[7];
if ($c != $o) {
$o = $c;
if ($skip1>0 and $is1>0) {
$is1=0;
next;
}
$is1=0;
system($prog);
}
sleep(1);
}
Read more