Ich habe eine Reihe von Kommentaren im Internet gesehen, die den Smart-Match-Operator von Perl nicht unterstützen . Ich weiß, dass es ursprünglich Teil von Perl 6 war, dann in Perl 5.10 aus einer alten Version der Spezifikation implementiert und dann in 5.10.1 korrigiert wurde, um der aktuellen Perl 6-Spezifikation zu entsprechen.
Wurde das Problem in 5.10.1+ behoben oder gibt es andere Probleme mit dem Smart-Match-Operator, die es in der Praxis problematisch machen?
Was sind die Probleme?
Gibt es eine aktuellere Version (vielleicht Perl 6), die die Probleme behebt?
Bearbeiten: Um das zu klären, frage ich nicht nach Fehlern, sondern bin der Meinung, dass das beabsichtigte Verhalten von ~~
schlecht ist.
Antworten:
Leute verwechseln oft die Probleme, die mit dem Smartmatch-Operator auftreten, mit denen, die mit dem
given/when
Konstrukt auftreten, wie zum Beispiel das Problem der Lexik$_
.Ich bin zu dem Schluss gekommen, dass Sie nicht verrückt werden, wenn Sie den Smartmatch-Operator nur für Literale verwenden. Ich kann in keiner anderen Situation etwas versprechen. Der Versuch, herauszufinden, was
$a ~~ $b
getan wird, reicht aus, um jeden anständigen Menschen dazu zu bringen, vor Wahnsinn schreiend davonzulaufen und eine andere Programmiersprache aufzunehmen.Zumindest ist das die Einstellung, die ich von Larry erhalten habe, als er die Smartmatch-Sektion der 4. Ausgabe von bearbeitet hat Programming Perl .
quelle
Der Smart Match Operator war nicht "kaputt" , hatte aber viele Fehler. Perl v5.12 hat das behoben und Perl v5.14 hat es meiner Meinung nach perfektioniert. Um Ihre Frage zu beantworten, behebt Perl ab Version 5.12 dieses Problem. Sie können es mit späteren Versionen von Perl v5.10 versuchen, aber ich weiß, dass es in Perl 5.12+ besser funktioniert.
Bearbeiten: Informationen zum Beantworten Ihrer Bearbeitung finden Sie in diesem Blog . Nachdem ich den Artikel gelesen habe, glaube ich, dass er Ihre Frage ausreichend beantwortet hat.
quelle