switch($action) {
case /adminpass(,|$)/ {
print "Do adminpass ($hostname)\n" if($verbose || $debug);
$t[++$#t]=threads->new(\&adminpass);
next;
} # end case /adminpass/
case /backup(,|$)/ {
print "Do backup ($hostname)\n" if($verbose || $debug);
$t[++$#t]=threads->new(\&backup);
next;
} # end case /backup/
case /buildhosts(,|$)/ {
print "Do buildhosts ($hostname)\n" if($verbose || $debug);
$t[++$#t]=threads->new(\&buildhosts);
next;
} # end case /buildhosts/
case /buildhostsdell(,|$)/ {
print "Do buildhostsdell ($hostname)\n" if($verbose || $debug
+);
$t[++$#t]=threads->new(\&buildhostsdell);
next;
} # end case /buildhostsdell/
...
}
####
if ($action=~/adminpass(,|$)/) {
print "Do adminpass ($hostname)\n" if($verbose || $debug);
push @t,threads->new(\&adminpass);
} # end case /adminpass/
if ($action=~/backup(,|$)/) {
print "Do backup ($hostname)\n" if($verbose || $debug);
push @t,threads->new(\&backup);
} # end case /backup/
if ($action=~/buildhosts(,|$)/) {
print "Do buildhosts ($hostname)\n" if($verbose || $debug);
push @t,threads->new(\&buildhosts);
} # end case /buildhosts/
if ($action=~/buildhostsdell(,|$)/) {
print "Do buildhostsdell ($hostname)\n" if($verbose || $debug
+);
push @t,threads->new(\&buildhostsdell);
} # end case /buildhostsdell/
...
####
# create a list of the command names and the subroutines they call
my %cmds=(adminpass =>\&adminpass,
backup =>\&backup,
buildhosts =>\&buildhosts,
buildhostsdell =>\&buildhostsdell
);
# break list of comma sep commands into words
# and if we have a subroutine for that word start a thread with it
for my $cmd (split(',',$action)) {
if (exists $cmds{$cmd}) {
print "Do $cmd ($hostname)\n" if($verbose || $debug);
push @t,threads->new($cmds{$cmd});
}
else {
print "Command $cmd unknown\n";
}
}