我怎麼能讀的最後修改文件的目錄中的perl內容閱讀Perl的最後一次修改的文件
我有收到手機短信的工具,我想給出來的最後修改文件的內容,它存儲在gammu/inbox目錄中,用一個perl腳本
例如:腳本檢查一個新文件夾(gammu/inbox)是否是他們,然後發出最後一個短信的內容。
我怎麼能讀的最後修改文件的目錄中的perl內容閱讀Perl的最後一次修改的文件
我有收到手機短信的工具,我想給出來的最後修改文件的內容,它存儲在gammu/inbox目錄中,用一個perl腳本
例如:腳本檢查一個新文件夾(gammu/inbox)是否是他們,然後發出最後一個短信的內容。
排序根據年齡的每個文件,使用-M
文件測試操作的目錄。最近修改的文件將成爲列表中的第一個
該程序顯示了原理。它找到當前工作目錄中的最新文件,打印它的名稱並打開它的輸入
如果您想對cwd以外的其他目錄執行此操作,那麼對chdir
而言,最簡單的方法是使用此代碼而不是試圖opendir
特定的目錄,那麼你將要興建的完整路徑每個文件可以使用-M
use strict;
use warnings 'all';
use feature 'say';
my $newest_file = do {
opendir my $dh, '.' or die $!;
my @by_age = sort { -M $a <=> -M $b } grep -f, readdir $dh;
$by_age[0];
};
say $newest_file;
open my $fh, '<', $newest_file or die qq{Unable to open "$newest_file" for input: $!};
之前,如果你是一個相當大的目錄中工作,那麼這可能需要一些時間爲stat
操作很慢。您可以通過使用的Schwartzian變換所以提高這個有很多是stat
爲每個文件
my $newest_file = do {
opendir my $dh, '.' or die $!;
my @by_age = map $_->[0],
sort { $a->[1] <=> $b->[1] }
map [ $_, -M ], readdir $dh;
$by_age[0];
};
如果你想要的東西真的快的話,只是做了文件的單次調用一次,保持跟蹤迄今爲止發現的最新信息。像這樣
my $newest_file = do {
opendir my $dh, '.' or die $!;
my ($best_file, $best_age);
while (readdir $dh) {
next unless -f;
my $age = -M _;
unless (defined $best_age and $best_age < $age) {
$best_age = $age;
$best_file = $_;
}
}
$best_file;
};
你需要讓文件的有序列表與
use File::DirList;
my @list = File::DirList::list('your_directory', 'M');
比列表的第一個元素是你在找什麼。
您可以在此處詳細瞭解圖書館File::DirList
與此腳本我看到最後的短信,然後我收到但不是這個短信的內容。謝謝 – perlfg
@perlfg:你需要告訴如何打開一個文件並打印它嗎? – Borodin
否:)我經常收到短信,並用perl迴應最後一條短信的內容 – perlfg