如果我有一个perl模块,例如:
package mytest;
use base 'Exporter';
our @EXPORT = qw(mysub);
sub mysub
{
print "foo";
}
1;
如果代码在函数名称中出现拼写错误,我如何使用perl -c
(语法检查)来捕获?目前我试过这个:
use strict;
use warnings;
use mytest;
&mysub();
&mysup(); # <-- Run time crash that is not captured with perl -c myfile.pl
mysup(); # <-- Also not captured with perl -c myfile.pl
答案 0 :(得分:1)
你做不到。
-c
选项仅检查Perl文件的语法是否正确。调用不存在的子例程是语义错误,并且因为Perl子例程可以在运行时的任何时刻定义,所以只有在尝试调用子例程时才能诊断它。
顺便提一下,包名称等全局标识符应该大写,因此您的包应该被称为Mytest
,而来源应该在Mytest.pm
。
此外,使用&号&
前缀调用子例程也是不好的做法。你的主程序应该是这样的
use strict;
use warnings;
use Mytest;
mysub();
mysup();
mysup();