Ich möchte die Ausgabe von ls --full-time
von einem Perl-Skript reproduzieren, um den Overhead des Aufrufs von ls
mehrere tausend Male zu vermeiden. Ich hatte gehofft, die Statistik -Funktion zu verwenden und alle Informationen von dort zu erfassen. Der Zeitstempel in der ls-Ausgabe verwendet jedoch die hochaufgelöste Uhr, so dass sie auch die Anzahl der Nanosekunden enthält (laut den GNU-Dokumenten bedeutet dies, dass - Vollzeit entspricht --format=long --time-style=full-iso
und die Voll-ISO Zeitstil umfasst die Nanosekunden).
Ich stieß auf das Modul Time :: HiRes , das die Standard-Statistikfunktion mit einer Funktion überschreibt, die zur Zeit zurückkehrt / mtime / ctime als Gleitkommazahlen, aber es gibt keine Überschreibung für lstat . Dies ist ein Problem, da der Aufruf von stat auf einem Symlink Informationen für die verknüpfte Datei zurückgibt, nicht für den Link selbst.
Also meine Frage ist das - wo finde ich eine Version von lstat, die atime / mtime / ctime auf die gleiche Weise wie Time :: HiRes :: stat zurückgibt? Ist das nicht der Fall, gibt es eine andere Möglichkeit, die Modtime für einen Symlink in hoher Auflösung zu erhalten (außer dem Aufruf von ls).
Am besten wäre es, wenn lstat
zu Time :: HiRes hinzugefügt wird. Tatsächlich könnten Sie es wahrscheinlich selbst tun. Ich würde wetten, dass Sie nur die Funktion kopieren müssen, die
in HiRes.xs
, ändern stat(...)
in lstat(...)
& amp; OP_STAT
bis OP_LSTAT
, addiere lstat
zu @EXPORT_OK
in HiRes.pm
und kompiliere neu. Dann reiche einen Patch ein, damit andere davon profitieren können.
Für den Datensatz wurde lstat
zu Time-HiRes Version 1.9726 im August 2013 hinzugefügt.
Siehe Ссылка für Details.
Es ist jedoch immer noch 1.9725
, das in der letzten stabilen Version von perl
vom 31.01.2014 (5.18.2) enthalten ist. Es wurde jedoch in der Entwicklungsversion in 5.19.3 auf 1.9726 gestoßen.
Beachten Sie, dass (unabhängig von perl
5.19.8), unabhängig davon, ob Time::HiRes
lstat
verwendet ist oder nicht, perl's -M
/ -A
/ -C
machen immer noch keine Granularität in Sekundenbruchteilen (Dateien mit der Zeit in der gleichen Sekunde werden als gleich alt angezeigt), Sie können also immer noch nicht sort {-M $a <=> -M $b} @files
verwenden, um Dateien nach Modifikationszeit zu sortieren.
Tags und Links perl symlink stat high-resolution