Einen Sinn sehe ich sehr wohl. Ohne [] bekommst du den Wert in skalarer Form. Mit [] bekommst du die Werte als Array, und das ganze auch noch verschachtelt, wenn du willst. Macht das Perl auch?
foo[bar][baz] ergibt $_POST['foo'] = array('bar' => array('baz' => value));
Zunächst ist wichtig: Perl macht da nichts. Das Ergebnis hängt davon ab, welches Modul ich verwende. CGI.pm, eine mir genehmere Variante die ich bei CPAN gefunden habe oder auch was selbstgestricktes sind denkbare Möglichkeiten.
In den meisten Fällen wird aber wohl CGI.pm zum Einsatz kommen. Hier ist mir kein Pendant zu o.g. PHP Variante bekannt, die wie ich zugeben muss, interessant klingt!
Wie macht denn Perl das? Entscheidet es von selbst, ob es einen skalaren Wert oder ein (flaches) Array liefert oder liefert es generell ein Array auch bei Einzelwerten?
Wiederum ausgehend von CGI.pm (und auch CGI::Minimal): Ersteres trifft zu. Bei mehrfachem vorkommen eines Feldnames wird ein Array geliefert, sonst ein Wert.
Noch doofer ist es, dass PHP mich zwingt, bei dieser mangelhaften Implementierung zu bleiben.
Tut es nicht. Du kannst gern $_GET und $_POST ignorieren und die Auswertung von Querystring und Request-Body selbst übernehmen, wenn du das willst.
Was spätestens bei Uploads aber problematisch wird. a) ist der Upload dann schon passé, b) ist das Auseinanderfieseln von Multipart ja keine Kleinigkeit.
Dass PHP hier nicht sauber programmiert ist, und diesen Index-Operator nur als "Displacement" verwendet, anstatt ihn je nach Kontext individuell zu überladen, das ist ja noch nicht endgültig ausdiskutiert.
Das verstehe ich nicht.
Ihr habt da ein Missverständnis. Aus deinem Posting war nicht klar zu erkennen...
Stimmt, danke für die Aufklärung!