I recently noticed that for non-existent files, mirror (the Perl script) now reports dates of "2069/12/31-19:00:00" instead of "1969/12/31-19:00:00" :
Compare src README.ftp (1): 1998/11/06-00:00:00 1301 f dest README.ftp (): 2069/12/31-19:00:00 0 0 Oh, gross. I just looked at mirror.pl: if( $year < 70 ){ $year += 2000; } else { $year += 1900; } But where exactly is the problem? The "70" in the if statement looks like it is based on the Unix epoch's starting in 1970 (and therefore should be correct). But the "19:00" is a reminder that the epoch's start in local time was as early as _noon_ on Dec. 31, 1969. Therefore, checking the local-time year against (19)70 is erroneous. I thought I heard that Perl represents the year as <year number> - 1900. (So the year 2000 is represented as 100.) Does that mean that the then part of the if statement above is completely superfluous? (The four-digit year would always be 1900 + perl's year, right?) In fact, does that mean that the only thing that the "$year += 2000;" part does it cause the 2069 error? (That is, the year can be less than 70 only for the local time of the first 12 hours of the epoch, right?) I don't recall when mirror's dates for non-existent files changed from 1969.... to 2069... (I don't know if it changed at a certain date or if I upgraded something.) Is that if statement a bit of supposed Y2K preparation that wasn't quite prepared right? (I recall reading that since Perl returns "99" for 1999, people think Perl uses only two digits for the year, and don't realize that in 2000, Perl will return a year value of 100. To print a four-digit year, they prepend "19" to the year; in 2000, that code will print "19100".) Daniel