Hallo,
ich nutze strict und warnings und habe keine Probleme.
Du hast sowas:
$, = $\ = "\n";
my %ip = ();
$ip{foo}{bar} = 2; # Versuch Zuweisung Literal
$ip{foo}{bar}{baz} = {bar => 1}; # Key baz hat eine Referenz als WertWarung:
Can't use string ("2") as a HASH ref while "strict refs" in use at ...
> >
> > Die Warnung kommt mit use strict; use warnings;
> > Es sei denn Du schaltest
> >
> > `no strict "refs";`{:.language-perl}
> >
> > Was ich nicht für empfehlenswert halte.
> >
> > Hotti
> >
> >
>
> Hallo,
>
> Wie schon geschrieben, habe ich keine warnings explizit ausgeschaltet und benutze use strict; use warnings;
> M.E. mache ich auch nicht den Fehler den du beischreibst, da "outgoing\_traffic" und "incoming\_traffic" lediglich feste Keys sind, denen ich einen Value zuordne. Soweit ich Hashtables verstehe kann man einem Schlüssel auch immer einen Wert zuordnen. Sprich ich könnte, "Source", $src\_ip", "src\_port"... jeweils einen festen Wert geben. Oder habe ich prinzipiell einen Denkfehler? Vor allem kann ich ja auch auf den Wert des "outgoing\_traffic" zugreifen ohne Fehler.
>
> Gruß
Hallo,
jetzt weiß ich was du meinst :-) Habe es gemerkt, da mein Programm sich in einem bestimmten Fall komisch verhalten hat, der im Regelfall so gut wie nicht auftritt. Habe meine Struktur überarbeitet, wie folgt:
~~~perl
$ip{"source"}{$src_ip}{$src_port}{$dest_ip}{$dest_port}{$bytes_total}{"outgoing_traffic"}+=$bytes_forwards;
$ip{"source"}{$src_ip}{$src_port}{$dest_ip}{$dest_port}{$bytes_total}{"incoming_traffic"}+=$bytes_backwards;
Musste zwar auch etwas meine Schleifen anpassen, jetzt passt es aber.
Trotzdem komisch, dass sich Perl nicht beschwert hat.
Gruß