मुझे perl subroutine defination में सरणी प्रकार तर्क घोषित करते समय संकलन त्रुटि का सामना करना पड़ रहा है। मेरे पूरा कोड के नीचे है:पर्ल में subroutines तर्कों के लिए सरणी और हैश डेटा प्रकार कैसे पास करें?
use Data::Dumper;
use Win32;
use Win32::Service;
use strict;
use warnings;
my @Services = qw(NNMAction RpcEptMapper smstsmgr SNMPTRAP);
my $server = 'nnmi.hclt.corp.hcl.in';
ServiceStatus($server , @Services);
sub ServiceStatus ($serverName,@serverServices)
{ my %statcodeHash = ( '1' => 'stopped',
'2' => 'start pending',
'3' => 'stop pending',
'4' => 'running',
'5' => 'continue pending',
'6' => 'pause pending',
'7' => 'paused' );
foreach my $serv (@serverServices)
{ my %status;
my $ret = Win32::Service::GetStatus($serverName , $serv , \%status);
if ($ret)
{ print "success \t$statcodeHash{$status{CurrentState}} \t$serv\n";
}
else
{ print Win32::FormatMessage(Win32::GetLastError()), "\n";
}
}
}
संकलन त्रुटि
>perl -w perl_RemoteServiceStatus.pl
Prototype after '@' for main::ServiceStatus : $serverName,@serverServices at per
l_RemoteServiceStatus.pl line 21.
Illegal character in prototype for main::ServiceStatus : $serverName,@serverServ
ices at perl_RemoteServiceStatus.pl line 21.
main::ServiceStatus() called too early to check prototype at perl_RemoteServiceS
tatus.pl line 16.
Global symbol "@serverServices" requires explicit package name at perl_RemoteSer
viceStatus.pl line 31.
Global symbol "$serverName" requires explicit package name at perl_RemoteService
Status.pl line 33.
Execution of perl_RemoteServiceStatus.pl aborted due to compilation errors.
कृपया चौथाई कोड डिबगिंग मेरी मदद। मुझे यकीन है कि यह कुछ के लिए केक का टुकड़ा होगा।
perl में तर्क प्रकार घोषित करने के लिए कोई तंत्र नहीं है। प्रोटोटाइप ऐसा लगता है कि वे पहली नज़र में करते हैं, लेकिन वास्तव में एक पूरी तरह से अलग उद्देश्य प्रदान करते हैं; आपको उनका उपयोग नहीं करना चाहिए। – ysth