Perl setzt bei regulären Ausdrücken Treffer-Variablen nicht zurück

14. September 2022 · Programmierung · andreas · Kein Kommentar

Werden z.B. innerhalb einer Schleife verschiedene Elemente mit Hilfe eines regulären Ausdrucks ausgewertet, so werden im Falle eines Nicht-Treffers die Treffer-Variablen nicht zurückgesetzt.

test.pl
use strict; use warnings; my @albums = ( 'The Phantom Agony', 'Design Your Universe', 'The Holographic Principle' ); foreach my $album (@albums) { $album =~ /(Universe)/; if (defined $1) { print "match: $1 -> '$album'\n"; } }

Auf den ersten Blick wäre zu erwarten, daß lediglich eine Zeile als Ergebnis ausgegeben wird, tatsächlich sind dies aber zwei:

match: Universe -> 'Design Your Universe' match: Universe -> 'The Holographic Principle'

Die Ursache liegt in der überhaupt nicht durchgeführten Überprüfung des Ergebnisses des regulären Ausdrucks, die korrekt so aussehen muss:

test.pl
use strict; use warnings; my @albums = ( 'The Phantom Agony', 'Design Your Universe', 'The Holographic Principle' ); foreach my $album (@albums) { if ($album =~ /(Universe)/) { print "match: $1 -> '$album'\n"; } }

Dann erscheint auch - wie ursprünglich erwartet - als Ergebnis nur eine Zeile:

match: Universe -> 'Design Your Universe'

Notiz an mich selbst: eine korrekte Behandlung von Abfrageergebnissen erspart eine aufwendige Fehlersuche.


Hörenswert #86: Fish - Just Good Friends feat. Sam Brown

12. September 2022 · Hörenswert · andreas · Kein Kommentar

Link zu Youtube

Ein wunderschöner Song, bei dem ich es nie verstanden habe, warum er nicht zu Begeisterungsstürmen und Verkaufserfolgen geführt hat: Fish und Sam Brown im Duett … hätte m.E. eigentlich die Hitparaden stürmen müssen.


Arbeitsweg

11. September 2022 · IMHO · andreas · Kein Kommentar
Navigationsgerät

Same shit … different day. Dank nicht funktionierendem Reißverschlussverfahren jeden Tag wieder hinten anstellen und die Ausweichrouten sind auch alle rot gefärbt.

Es nervt!


WordPress-Wartungsmodus manuell aktivieren

08. September 2022 · Anwendungen · andreas · Kein Kommentar

Bei einer Aktualiserung schaltet WordPress die Website automatisch in den Wartungsmodus, ein Mechanismus, den man auch für manuelle Wartungen aktivieren kann.

Zum Aktivieren wird eine Datei “.maintenance” mit folgendem Inhalt im Hauptverzeichnis der WordPress-Installation angelegt, welche den Wartungsmodus bis zum Entfernen (oder Umbenennen der Datei) aktiviert.

<?php $upgrading = time(); >

Die Erklärung der Funktionsweise findet sich im WordPress-Quellcode innerhalb der Datei load.php

... 303 function wp_is_maintenance_mode() { 304 global $upgrading; 305 306 if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() ) { 307 return false; 308 } 309 310 require ABSPATH . '.maintenance'; 311 // If the $upgrading timestamp is older than 10 minutes, consider maintenance over. 312 if ( ( time() - $upgrading ) >= 10 * MINUTE_IN_SECONDS ) { 313 return false; 314 } ...

Im ersten Schritt wird das Vorhandensein einer Datei “.maintenance” im Hauptverzeichnis der WordPress-Installation geprüft. Ist diese vorhanden, so wird vom aktuellen Zeitstempel der Wert der Variablen “$upgrading” subtrahiert. Ist der Rest größer oder gleich 10 Minuten, so wird der Wartungsmodus deaktiviert.

Durch das Setzen der Variable “$upgrading” auf den aktuellen Zeitstempel bleibt die Differenz immer 0, die 10 Minuten werden nie überschritten und der Wartungsmodus kann manuell gesteuert werden.


Hörenswert #85: Northern Crown - The Last Snowfall

05. September 2022 · Hörenswert · andreas · Kein Kommentar

Link zu Bandcamp

Im Deaf Forever-Forum als “Neuere Opeth in härter garniert mit einer ordentlichen Prise Rainbow/Sabbath” vorgestellt, macht “The Last Snowfall” in der Tat neugierig auf die komplette “In A Pallid Shadow” von Northern Crown.