#!/usr/bin/perl -wT use strict; use warnings; use Digest::MD5; my $DIR_PATH="/var/tmp"; my $PREFIX = "somedemotmpfile"; sub make_file { my ($filename) = @_; open my $fh, '>', $filename; print {$fh} "1" . "\n"; print {$fh} "2" . "\n"; print {$fh} "3" . "\n"; close $fh; } sub make_tmpfile { foreach (1..3){ my $tmpfilename = "$DIR_PATH/$PREFIX-" . Digest::MD5::md5_hex($_ . time() . $$); make_file($tmpfilename); } } sub clean_tmpfile { opendir (my $dh, $DIR_PATH) || die "Can not open $DIR_PATH/n"; my @dots=grep { !/^\.+$/ } readdir($dh); closedir($dh); foreach my $file (@dots) { my $afile = "$DIR_PATH/$file"; my $now = time(); if (-e $afile && $afile =~ m/(^.*$PREFIX.*$)/) { $afile = $1; my $mtime = (stat ($afile))[9]; my $margin = $now - $mtime; print("$afile - Last change: $mtime - now: $now - margin(s): $margin\n"); eval { unlink $afile; }; warn $@ if $@; } } } sub main { make_tmpfile(); clean_tmpfile(); } main();