#!/usr/bin/perl use v5.36; use warnings; use strict; use Time::HiRes qw(sleep); use Linux::Inotify2; use POSIX qw(strftime); use Mojo::File; use Y::AoC qw(grey red); my $cmd = shift; my $backup = "backup/$cmd"; $cmd = "./$cmd" if $cmd !~ /\//; my $last_backup; while (1) { my $b = "$backup-".strftime("%H-%M-%S", localtime(time)); system 'cp', $cmd, $b; say grey("\nrunning $cmd @ARGV... ============================"); system $cmd, @ARGV; if ($?) { say grey("FAILED: $?"); } else { say grey("finished OK"); } my $inotify = Linux::Inotify2->new; $inotify->watch($cmd, IN_MODIFY); say grey("\nWaiting for modification of $cmd ..."); $inotify->read; sleep 0.1; }