Thread push zu arrayref (33 answers)
Opened by Froschpopo at 2008-05-10 16:42

KurtZ
 2008-05-14 05:59
#109669 #109669
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
DanielH+2008-05-12 18:00:04--
Stimmt, über so etwas hab ich noch gar nicht nachgedacht. Für mich würde im Prinzip "sub ARef { @{$_[0]} }" und "sub HRef { %{$_[0]} }" bereits ausreichen. Leider kann man allerdings HRef nicht mit 'keys' und 'values' benutzen (was ich oft verwende).


Ja, die Builtins verlangen, das ein Array dasteht und nicht eine Funktion. Das ist auch nicht das einzige Problem wenn man sich @{ } sparen will. Z.B. kann man sowas auch nicht abbilden, @{$ar1} =@{$ar2} weil hier die linke Seite einen Listenkontext erzwingt.

Was man aber zumindest machen kann ist die Builtins so zu überschreiben dass sie wahlweise ein Array oder einen Scalar (für die Referenz) schlucken.

DanielH+2008-05-12 18:00:04--
Ein source Filter sollte noch eine andere Möglichkeit sein. Da sollte es auch performance-technisch die geringste Verluste geben (wenn das Script länger als 0,2 Sekunden läuft). Allerdings habe ich noch nie was mit source Filtern gemacht, und kenne nicht die Nachteile, die so etwas mitbringt (abgesehen von den offensichtlichen).


neben den offensichtlichen Problemen gibt es noch das allergrößte: Perlsyntax lässt sich nicht statisch parsen, und das muss man können um die schließende Klammer von @{ } korrekt setzen zu können.

Wo eine derefrenziertes Array von Arrays aufhört klärt sich unter Umständen erst zur Laufzeit, d.h. wenn der Sourcefilter schon lange durchgelaufen ist.
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread push zu arrayref