다른 펄 스크립트 (sample.pl)에서 8 개의 매개 변수를 갖는 서브 루틴을 내 perl 스크립트 (sample1.pl)에서 호출하려고합니다. 이 오류가 발생합니다. 오류는 어떻게다른 펄 스크립트에서 8 개의 매개 변수를 가진 서브 루틴을 호출하는 방법
sample1.pl에게
require 'sample.pl';
use strict;
use warnings;
my $sa = main_prgm();
sub main_prgm {
eval(callng_prgm(10,12,15,14,16,12,12,12));
}
sample.pl을 수행하는 날을 제안 해주십시오 수
"sum of 8 numbers is 0Illegal character in prototype for main::callng_prgm : $a,$b,$c,$d,$e,$f,$g,$h at D:/workspace/sdff/sample.pl line 4.
Use of uninitialized value $b in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $a in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $c in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $d in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $e in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $f in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $g in addition (+) at D:/workspace/sdff/sample.pl line 6.
Use of uninitialized value $h in addition (+) at D:/workspace/sdff/sample.pl line 6.
"
로 표시됩니다
use strict;
use warnings;
our ($a,$b,$c,$d,$e,$f,$g,$h);
sub callng_prgm ($a, $b, $c, $d, $e, $f, $g, $h) {
my $z = ($a+$b+$c+$d+$e+$f+$g+$h);
print "sum of 8 numbers is $z";
}
1;
Perl의 프로토 타입은 필요하지 않으며 다른 언어와 같은 방식으로 작동하지 않으므로 수행하는 작업을 모르는 경우 사용하지 마십시오. 프로토 타입은 하위 이름 뒤에 괄호 안에 들어있는 내용입니다. 하위 선언은 다음과 같아야합니다 :'sub NAME {CODE}'(괄호 없음) – TLP
perl5에서 구현되지 않은 이름 지정된 인수를 사용하려고 시도합니다. 다른 방식으로 이것을 수행 할 수 있습니다. http://perldesignpatterns.com/?NamedArguments – teodozjan