in reply to Return newest file
stat is your friend
From the Perldocs..
Here is a quick and dirty hack of how to do it without using dir..Returns a 13-element list giving the status info for a file, either th +e file opened via FILEHANDLE, or named by EXPR. If EXPR is omitted, i +t stats $_. Returns a null list if the stat fails. Typically used as +follows: ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename); Not all fields are supported on all filesystem types. Here are the mea +ning of the fields: 0 dev device number of filesystem 1 ino inode number 2 mode file mode (type and permissions) 3 nlink number of (hard) links to the file 4 uid numeric user ID of file's owner 5 gid numeric group ID of file's owner 6 rdev the device identifier (special files only) 7 size total size of file, in bytes 8 atime last access time in seconds since the epoch 9 mtime last modify time in seconds since the epoch 10 ctime inode change time (NOT creation time!) in seconds since t +he epoch 11 blksize preferred block size for file system I/O 12 blocks actual number of blocks allocated
Note the mtime is returned as an epoc time so if you want yesterdays file all you have to do is subtract 86400 seconds... type stuff... -----#! /usr/bin/perl use strict; use warnings; use File::stat; my $dir = $ARGV[0] || "./"; my ($time1, $time2, $returnname); opendir (DIR, $dir) or die "Cannot open $dir: $!\n"; while( my $file = readdir( DIR ) ) { next if $file =~ /^\./; my $sb = stat($file); $time2 = $sb->mtime; if ($time2 > $time1) { $time1 = $time2; $returnname = $file; } #printf "File is %s, size is %s, mtime %s\n", $file, $sb->size, $sb +->mtime; } print "Newest file is $returnname\n";
Of all the things I've lost in my life, its my mind I miss the most.
In Section
Seekers of Perl Wisdom