Stefan Welscher: Multidimensionale Hashes komplett dereferenzieren?

Beitrag lesen

Nenene, so wird dat nüschd. Definiere IF-Objekte, am Besten über eine eigene Klasse und new();

Da hast du mich.... mit Oo hab ich noch keinerlei relevante Erfahrung....
Aber im Prinzip willst du darauf hinaus, dass die Referenzstruktur flacher werden soll? Das mag hier im Beispiel sehr einfach gehen, aber ganz so simple ist der Aufbau dann im Endeffekt nicht. Ein Interface kann z.B. noch beliebig viele Secondary-IPs, IP-Helper-Einträge, oder sogar Kaskaden haben:

$I{'ce'}{'lan'}{1}{'ifc'}="FastEthernet0/2-3";
$I{'ce'}{'lan'}{1}{'ip'}="1.1.1.1";
$I{'ce'}{'lan'}{1}{'sec'}{1}{'ip'}="10.10.10.10";
$I{'ce'}{'lan'}{1}{'sec'}{2}{'ip'}="20.20.20.20";
$I{'ce'}{'lan'}{1}{'helper'}{1}="100.100.100.1";
$I{'ce'}{'lan'}{1}{'helper'}{2}="100.100.100.2";
$I{'ce'}{'lan'}{1}{'cc'}{1}{'hostname'}="CC_Router1";
$I{'ce'}{'lan'}{1}{'cc'}{1}{'id'}="11/11/1111-1111/11";
$I{'ce'}{'lan'}{1}{'cc'}{1}{'ip'}="1.1.1.2";
$I{'ce'}{'lan'}{2}{'ifc'}="GigabitEthernet0/1-2";
$I{'ce'}{'lan'}{2}{'ip'}="2.2.2.2";

Das ganze gibt es dann auch noch mit Subinterfaces:

$I{'ce'}{'lan'}{1}{'subif'}{1}{'ifc'}="FastEthernet0/2-3";
$I{'ce'}{'lan'}{1}{'subif'}{1}{'ip'}="1.1.1.1";
$I{'ce'}{'lan'}{1}{'subif'}{1}{'sec'}{1}{'ip'}="10.10.10.10";
$I{'ce'}{'lan'}{1}{'subif'}{1}{'helper'}{1}="100.100.100.1";
....

Lässt sich deine Variante dann überhaupt anwenden?
Ich glaub der Code würde dann im Endeffekt wesentlich komplexer und unübersichtlicher werden, als er aktuell ist. Und Schleifendurchläufe wären mit dem "lan_x"-Key auch nicht mehr möglich, ohne jedes mal einen neuen String zu bauen.
Auf die schnelle bringt mir das jedenfalls nichts, auch wenn man das evtl. längerfristig ins Auge fassen muss, aber ich sollte bis Montag eine funktionsfähiges neues Release haben. In der Zeit kann ich keine 50.000 Zeilen Code anpassen, bzw. dann eher neu schreiben.....