OS: Windows Server 2012 R2 Standart FS: NTFSDatei Ctime verschiedene unter Perl 5 und Perl 6
=== perl5
e:\temporary>perl -v
This is perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x64-multi-thread
e:\temporary>type ctime.pl
use File::stat;
use Time::Piece;
my $fn1 = 't:\temporary\tia\Энергия\print.pdf';
my $fn2 = 't:\temporary\tia\Энергия\kl_to_1c.txt';
for ($fn1,$fn2) {
my $fs = stat($_);
print "$_\n";
print 'changed ',gmtime($fs->ctime)->datetime,"\n";
print 'modified ',gmtime($fs->mtime)->datetime,"\n";
print 'accessed ',gmtime($fs->atime)->datetime,"\n";
}
e:\temporary>perl ctime.pl
t:\temporary\tia\Энергия\print.pdf
changed 2016-07-01T03:48:22 <== (1)
modified 2016-05-04T03:03:08
accessed 2016-07-01T03:48:22
t:\temporary\tia\Энергия\kl_to_1c.txt
changed 2016-07-01T03:48:22 <== (3)
modified 2016-07-01T03:11:00
accessed 2016-07-01T03:48:22
=== Perl6
e:\temporary>perl6 -v
This is Rakudo version 2016.04 built on MoarVM version 2016.04
implementing Perl 6.c.
e:\temporary>type ctime.pl6
use v6;
my $fio1 = 't:\temporary\tia\Энергия\print.pdf'.IO;
my $fio2 = 't:\temporary\tia\Энергия\kl_to_1c.txt'.IO;
for $fio1,$fio2 {
say .path;
say 'changed ', .changed.DateTime.truncated-to('second');
say 'modified ', .modified.DateTime.truncated-to('second');
say 'accessed ', .accessed.DateTime.truncated-to('second');
}
e:\temporary>perl6 ctime.pl6
t:\temporary\tia\Энергия\print.pdf
changed 2016-05-04T03:03:08Z <== (2)
modified 2016-05-04T03:03:08Z
accessed 2016-07-01T03:48:22Z
t:\temporary\tia\Энергия\kl_to_1c.txt
changed 2016-07-01T05:46:12Z <== (4)
modified 2016-07-01T03:11:00Z
accessed 2016-07-01T03:48:22Z
Warum (1), (2) und (3), (4) sind unterschiedlich? Es ist OK?
Wiedergabe (1), (2).
1) Erstellen Sie die Datei mit dem Texteditor. Der Unterschied wird in Sekunden sein.
Von perl5:
changed 2016-06-30T16:38:42
modified 2016-06-30T16:38:48
accessed 2016-06-30T16:38:42
Von Perl6:
changed 2016-06-30T16:38:48Z
modified 2016-06-30T16:38:48Z
accessed 2016-06-30T16:38:42Z
2) Bearbeiten Sie diese einige Minuten später Datei. Der Unterschied wird auffälliger sein. Von perl5:
changed 2016-06-30T16:38:42 <==
modified 2016-06-30T16:49:17
accessed 2016-06-30T16:38:42
Von Perl6:
changed 2016-06-30T16:49:17Z <==
modified 2016-06-30T16:49:17Z
accessed 2016-06-30T16:38:42Z
'stat' von cgwin/babün
{ ~ } » stat t:/temporary/tia/Энергия/print.pdf ~
File: ‘t:/temporary/tia/Энергия/print.pdf’
Size: 81595 Blocks: 80 IO Block: 65536 regular file
Device: dfe235h/14672437d Inode: 26458647810801926 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/Administrator) Gid: ( 513/Domain Users)
Access: 2016-07-01 09:48:22.578784100 +0600
Modify: 2016-05-04 09:03:08.602697600 +0600
Change: 2016-05-04 09:03:08.602697600 +0600
Birth: 2016-07-01 09:48:22.578784100 +0600
{ ~ } » stat t:/temporary/tia/Энергия/kl_to_1c.txt ~ 1
File: ‘t:/temporary/tia/Энергия/kl_to_1c.txt’
Size: 4596 Blocks: 8 IO Block: 65536 regular file
Device: dfe235h/14672437d Inode: 24769797950537989 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/Administrator) Gid: ( 513/Domain Users)
Access: 2016-07-01 09:48:22.563158800 +0600
Modify: 2016-07-01 09:11:00.585249200 +0600
Change: 2016-07-01 11:46:12.037712200 +0600
Birth: 2016-07-01 09:48:22.563158800 +0600
Was ist das Ergebnis des Aufrufs des Befehls 'stat' in der Datei? –
Ich aktualisierte das Beispiel mit UTC/GMT. Da Windows nicht 'stat' hat, haben die Daten mit cgwin/babun shell – sftf
Die Dokumente für ['stat'] (http://perldoc.perl.org/functions/stat.html" perldoc -f stat ") erwähnen das 'ctime' ist nicht tragbar. Betrachtet man den ['stat'-Abschnitt von perlport] (http://perldoc.perl.org/perlport.html#stat), so heißt es, dass' ctime' die Erstellungszeit unter Windows ist. Es ist möglich, dass Rakudo etwas anderes macht, um tragbarer zu sein. (Es könnte auch ein Fehler sein) –