wp.jochen.hayek.name/blog-de

Perl 5.18: Ein kleiner, aber nachhaltiger Schritt | heise Developer

Perl 5.18: Ein kleiner, aber nachhaltiger Schritt | heise Developer

Eine der mit 5.18 kommenden Änderungen:

5.18 löst die uneinheitliche Behandlung von $_ in diesem (s.u.!) Zusammenhang, wird aber bestimmt “laufende Programme ins Stolpern bringen“:

Wenn durchgehend local $_ verwendet wird (der Normalfall in Perl), dann lässt sich das auch ordentlich schachteln, wenn in manchen Kontexten stattdessen my $_ (also ein “lexikalisches $_“) verwendet wird, dann führt das zu unerwarteten Verdeckungen (“override”).
Man sieht also z.B. in einem try/catch (aus Try::Tiny) innerhalb eines given/when ganz unerwartet das (lexikalische) $_ aus dem when statt des (local) $_ aus dem catch. Eines der Caveats in der Dokumentation von Try::Tiny beschreibt das Problem und auch den Work-Around.
Mit solchem Code hatte ich es kürzlich mit 5.14 in einem Projekt zu tun.
Exit mobile version