Thread Variable _ ? (52 answers)
Opened by bianca at 2020-12-25 10:24

haj
 2021-01-05 12:53
#193083 #193083
User since
2015-01-07
540 articles
BenutzerIn

user image
2021-01-05T08:42:41 bianca
2021-01-05T01:18:37 haj
Um uns zu verwirren?

Nein. Sondern um festzustellen, mit welchem Code was raus kommt. Wir sind doch hier im Moment im Labor oder nicht? Verstehe dich gerade nicht so richtig. Fühle ich da etwas Verärgerung bei dir?
Eher Unverständnis. Im Labor bemühe ich mich, Fehler zu isolieren und Experimente nachvollziehbar zu machen. Das kann ich aber nicht, wenn alles hintereinander angewendet wird und ich die Zeitzonen- und DST-Einstellungen Deines Systems nicht kenne.

2021-01-05T08:42:41 bianca
Aktuell weiß ich, dass es in Strawberry anders läuft als ich mir wünschte...
Ja, da scheiden sich möglicherweise die Geister. Nach meiner Lesart der alten Artikel (2003!) macht Strawberry Perl es so, wie ich es für richtig halte und der Fehler liegt irgendwo anders.

2021-01-05T08:42:41 bianca
Was soll ich tun/testen/schreiben?
Wenn Du ein System hast, bei dem Du die Systemzeit ändern kannst, dann schreibe ein Programm, das alle halbe Stunde eine Datei mit fortlaufend nummerierten Dateinamen erstellt und lasse das während der Zeitumstellung von Sommerzeit auf Winterzeit laufen - und dann prüfe, was stat Dir für die Liste liefert. Mein Windows-Notebook steht grade woanders (Serenia), ich werde so einen Test machen, wenn die reale Zeitumstellung passiert.

2021-01-05T08:42:41 bianca
2021-01-05T01:18:37 haj
Laut Dokumentation:
Quote
$isdst is true if the specified time occurs during Daylight Saving Time, false otherwise.
-1 ist "true" bei Perl. Wenn Du -1 von 1 unterscheiden musst, dann ist das Glücksspiel. In welcher Situation bekommst Du -1?

Bekomme ich nicht sondern steht in der selben Doku bei Localtime([time]):
Quote
The daylight savings time flag ("$dst") will be "-1" if this information is not available on your system, "0" for no daylight savings time (i.e., winter time) and "1" when daylight savings time is in effect.
Sorry, Bianca, das ist nicht die Doku, die ich verlinkt habe. Du zitierst aus CPAN:Date::Calc für Localtime (großes L!), ich meine die Perl-Funktion localtime. Meines Wissens war letzte System, in dem diese Information nicht verfügbar war, Perl 5.004 auf MS-DOS.

2021-01-05T08:42:41 bianca
2021-01-05T01:18:37 haj
In der Umstellungsnacht wird die lokale Zeit um eine Stunde zurückgedreht. stat liefert, wenn's korrekt implementiert ist, die Anzahl an Sekunden seit 1. Januar 1970 UTC, und läuft einfach weiter. Lokale Zeiten von 02:00 bis 03:00 gibt es in der Umstellungsnacht zweimal, die sind 3600 stat-Sekunden auseinander.

Wie schon Raubtier geantwortet: das macht die andere rsync Seite auch. Dann matcht es wieder. Mit welchem Ergebnis es matcht spielt keine Rolle.
Hier kommt mit rsync eine weitere Fehlerquelle ins Spiel... ich habe so langsam den Verdacht, dass Du ein rsync-Problem mit Perl-Mitteln "reparieren" willst.

2021-01-05T08:42:41 bianca
Die andere Seite ist ein FTP-Server mittels CPAN:Net::FTP der es "richtig" macht, daher ist hier nur die lokale Seite zu korrigieren gewesen.
Hm. CPAN:Net::FTP ist ein FTP-Client und kein Server. Läuft der Server vielleicht unter Windows und hat seine eigenen DST-Fehler?

2021-01-05T08:42:41 bianca
Vielen vielen Dank auch nochmal für deine Hilfe! Und bitte nicht sauer sein über meine Doofheit. Ich habe mir das alles eher schlecht als recht selbst angeeignet. Aber es läuft - meistens :)
Wenn ich sauer wäre, würde ich einfach nicht mehr antworten. Aber ich finde das eigentlich eine der schönen Eigenschaften dieses Forums, dass hier auch "einfachere" Fragen gestellt und beantwortet werden.

2021-01-05T08:42:41 bianca
Ich setze gelöst und stehe - wie gesagt - für weitere Tests und Analysen gern zur Verfügung.
Testen geht am einfachsten in der Sommerzeit: Auf jedem beteiligten System zur gleichen Zeit eine Datei anlegen, mit dem eingebauten stat die Daten notieren... und dann die Dateien mit rsync oder Net::FTP hin-und herkopieren und beobachten, ob und wie sich die stat-Ausgaben ändern. Ansonsten: Wo immer möglich, localtime durch gmtime ersetzen.

View full thread Variable _ ?