I\'m looking for a solution similar to the inotify method of watching files for changes. I\'m aware that I could watch the binlog file of the mysql database and run queries
If you add a TRIGGER to the table(s) you're interested in, you can use that to alert the watching application. You could do that in a number of ways:
As far as MyISAM tables go you can watch information_schema.TABLES.UPDATE_TIME
. That would save you from polling all tables you're interested in. For InnoDB, watching binlog is the best I can think of.
Another approach is to do a push/signal instead of a DB poll. Have whatever process updates the database, notify your Perl code that an update was done via any IPC you pick (heck, a log file being appended to with name of table being changed might do the trick well enough).
This is especially effective if the updates a fairly rare/low volume yet the reaction time to them must be quick.
An additional benefit is portability - works for any MySQL backend or for any other DB engine.