This is returning "Not enough arguments for main::queryProcesses" when called from the if block. But I only specified one argument in the subroutine declaration. I don't understand what's going on.
In addition, use strict tells me that "global symbol $server requires explicit package name". I do not wish to have this be a global variable, so how would I declare it?
Here is the relevant code:
#!/usr/local/bin/perl -w
use strict;
use CGI;
use Proc::ProcessTable;
my $statusCGI = new CGI;
# Configuration variables
our $acmePath = "/usr/local/acme";
our $universedBin = "universed";
our $worldBin = "world";
#our %universed = ("status", "server", "uptime", "user", "PID");
our %universed = ();
#our %world = ("status", "server", "uptime", "user", "PID");
our %world = ();
sub queryProcesses($server) {
my $process = new Proc::ProcessTable();
my $processTable = $process->table;
my $processTableRecord;
foreach $processTableRecord (@{$process->table}) {
if ($processTableRecord->fname eq $server) {
%{$server} = (
pid => '$processTableRecord->pid',
server => '$processTableRecord->fname'
);
print $processTableRecord->uid, "\n";
}
}
}
if (!$statusCGI->param("universedAction") && !$statusCGI->param("world
+Action")) {
queryProcesses("$universedBin");
queryProcesses("$worldBin");
}
Any insight as to what's going on would be appreciated.
dpatrick