Thread Hash als Option missbrauchen (118 answers)
Opened by bloonix at 2005-12-19 02:24

steffenw
 2005-12-20 13:54
#60992 #60992
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die foreach-Schleife ist doch völlig für'n Schrubber. Man nimmt doch einen Hash, weil man zugreifen kann und eben nicht wie in einem Array suchen muß. Das ist doch wesentlich performanter und auch viel leichter lesbar.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $stats = Statistics(
 ProcStats => 1,
 MemStats => 1,
 NetStats => 1,
 DiskStats => 1,
 DiskUsage => 1,
);

sub Statistics {
 my %param = @_;
 my %stats;
 if ($param{ProcStats}) {
   $stats{ProcStats} = ProcStats();
 } elsif ($param{NetStats}) {
   $stats{NetStats} = NetStats();
 } # usw ...
 return \%stats;
}


Wenn man die 1 nicht will, reicht auch undef. Dann wird nicht extra Speicher allociert, nur um da eine 1 hineinzupacken. Entweder macht man Parameterübergabe mit benannten Parametern wie oben oder schreibt die Optionen einfach nur hin.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $stats = Statistics(qw/ProcStats MemStats NetStats DiskStats DiskUsage/);

sub Statistics {
 my %param = map +($_ => undef), @_;
 my %stats;
 if (exists $param{ProcStats}) {
   $stats{ProcStats} = ProcStats();
 } elsif (exits $param{NetStats}) {
   $stats{NetStats} = NetStats();
 } # usw ...
 return \%stats;
}

Außerdem möchte ich auf das Modul Params::Validate hinweisen.\n\n

<!--EDIT|steffenw|1135079890-->
$SIG{USER} = sub {love 'Perl' or die};

View full thread Hash als Option missbrauchen