Thread Hash als Option missbrauchen
(118 answers)
Opened by bloonix at 2005-12-19 02:24
Es lohnt sich, Perl komplett zu erlernen. Es lohnt sich auch, zu versuchen, Module der Perl-Autoren im CPAN zu verstehen. Ich meine die Source. Es sollten aber welche sein, die noch handlich von der Größe sind. Damian Conway-Module sind da vielleicht ein Tip.
Dein Modul ist recht ordentlich gebaut. Aber das willst Du sicher nicht wissen, sondern was man noch anders machen könnte. Code: (dl
)
1 $stats->{'ProcStats'}->{'ProcUser'} ist für mich übertrieben gequotet. {} quotet schon Hashkeys, man muß also nicht erst mit '...' die Evaluierung anwerfen. Code: (dl
)
print ' ' x 2 . "$key" . ' ' x (30-length($key)) . "$value\n"; print erwartet nicht einen Scalar, es erwartet Listen. Du kannst also print die einelnen Elemente durch Komma getrennt hinwerfen und mußt sie nicht erst vorher zusammenverketten. Wie das print dann optimiert, ... ist print's Sache. Code: (dl
)
return undef; Das ist doppelt. return; ohne Argument ist richtig und undef; auch, weil es der zuletzt evaluierte Wert ist und somit sowieso zurückgegeben wird. Beides zusammen bremst nur. Denn in $file könnten auch < oder > am Anfang stehen. So etwas kann gefährlich werden, wenn $file taint ist. Ich hab's nicht genau angeschaut, aber so viele verschiedene Handles, die sicher nie alle gleichzeitig offen sind, fallen auf. Code: (dl
)
open my $handle, '<', $file or ... gibt es auch. Das macht manchmal einiges einfacher. Vor allen Dingen, wenn $handle aus dem Scope hüpft, ist die Datei sauber geschlossen. Slices erzeugen sehr klaren kurzen Code. Code: (dl
)
1 for (@sys{keys %sys}) { Beim Gruppieren sieht man besser, wo die Abbrüche sind Code: (dl
)
... = (split /\s+/, <PRC>)[0..6,9..18,21..22,35..36,38]; (\s+|) im regulären Ausdruck ist das nicht das gleiche wie (\s*) ?? Immer wieder der Gleiche Pfad zu den Daten, ein Alias wirkt Wunder und erhöht die Performance Code: (dl
)
1 $disk{$3}{'DiskMajor'} = $1; $SIG{USER} = sub {love 'Perl' or die};
|