I recently needed to compile an automatic image show with a digital projector which could show JPG images by itself. However, it showed them sorted by time, oldest image first, not by name (I did name them 000.jpg, 001.jpg, etc.). So I decided to change the modification dates in an incremental way. A simply shell loop with
touch didn't give good enough results, I need to add
sleep 1; (or even 2) which of course takes too long.
So, Perl came to the rescue: The following small script takes a list of files and gives the last file the current time while every previous file is dated one second earlier. This worked very well with my projector.
#!/usr/bin/perl
use strict;
use warnings;
my $timestamp = time;
for my $file (reverse @ARGV) {
utime $timestamp, $timestamp, $file;
$timestamp--;
}