Habe es umprogrammiert. Läuft wie ne eins! (Was die Fehlermeldungen betrifft. Ob die Skalare noch zu gebrauchen sind sehe ich Morgen...)
Natürlich nicht. Struppis Antwort funktioniert nicht in gewissen pathologischen Fällen. Du solltest dir angewöhnen, jedenfalls //
zu verwenden, nicht ||
. Der erstere prüft auf Definiertheit, der letztere auf Wahrheit. Erläuterung siehe perlop. Diese Beispiele zeigen das Problem:
'irgendein String' || 'X' # ok 'irgendein String'
5 || 'X' # ok 5
undef || 'X' # ok 'X'
'0' || 'X' # nok 'X'
'0 but true' || 'X' # ok '0 but true'
0 || 'X' # nok 'X'
0E0 || 'X' # nok 'X'
'irgendein String' // 'X' # ok 'irgendein String'
5 // 'X' # ok 5
undef // 'X' # ok 'X'
'0' // 'X' # ok '0'
'0 but true' // 'X' # ok '0 but true'
0 // 'X' # ok 0
0E0 // 'X' # ok 0
Mit anderen Worten: mit ||
kann man nicht einen logisch falschen, aber definierten Wert wie '0' übergeben. Dein Code macht nicht (immer) das, was du erwartest. Dies ließe sich womöglich von einem bösartigen Benutzer ausnutzen. Diese Absätze sind also keine Korinthenkackerei, sondern ein ernster Sicherheitshinweis.
Ein lustigen Fehler hat mir das Serverlog noch ausgegeben:
File does not exist: /var/www/favicon.ico
Er sucht tatsächlich nach einem favicon.
Der Server macht fast nie was von allein. Er macht das, weil dein Browser eins angefordert hat. Dies geschieht automatisch, sofern nicht vom Benutzer unterbunden.