我写了这个来检查是否在某个目录中创建了一个文件并给我最新的文件,如何修改我的正则表达式只能获取某个文件类型的最新文件*(比如说.txt)< / p>
my $DIR="C:\\Dropbox\\AnalysesLogs";
opendir(my $DH, $DIR) or die "Error opening $DIR: $!";
my @files = map { [ stat "$DIR/$_", $_ ] } grep(! /^\.\.?$/, readdir($DH));
closedir($DH);
sub rev_by_date { $b->[9] <=> $a->[9] }
my @sorted_files = sort rev_by_date @files;
my @newest = @{$sorted_files[0]};
my $newestfile = pop(@newest);
目前$ newestfile将是最新文件,但它是一种非首选类型,我只希望看到最新的.txt类型。
谢谢!
答案 0 :(得分:1)
再次使用grep
:
my @files = map { [ stat "$DIR/$_", $_ ] } grep { /\.txt$/ } grep(! /^\.\.?$/, readdir($DH));
这假设您没有带.txt
后缀的子目录。
这可以进一步简化,因为它会过滤掉2个点目录:
my @files = map { [ stat "$DIR/$_", $_ ] } grep { /\.txt$/ } readdir($DH);
答案 1 :(得分:0)