我如何解决以下错误“Undefined subroutine& main :: resetCounters”?该子程序已经原型化,但Perl仍然抱怨.以下代码是我遇到的问题:
#!/usr/bin/perl use strict; use warnings; ... sub reportStats(); sub resetCounters(); #HERE IS THE PROTOTYPE sub getUpperBusTimeStampAndBatchSize($); sub toMs($); sub tibTimeToMs(); sub calcStdDev(); ... print "\nTimeStamp TPS MPS MaxBat AvgBat MaxLat AvgLat StdLat >5ms %>5ms\n"; resetCounters(); #THIS IS THE LINE CONTAINING THE ERROR ... sub resetCounters() # ----------------------------------------------------------- # resets all metrics counters # ----------------------------------------------------------- { $tps = 0; $mps = 0; $batch = 0; $maxBatch = 0; $avgBatch = 0; $latency = 0; $latencySum = 0; $maxLatency = 0; $avgLatency = 0; $overThreshold = 0; $percentOver = 0; $currentSecond = $second; @latencies = (); }
解决方法
我不能肯定这是问题所在,但您可能会查看
subs
编译指示以预先确定您的函数.
快一点……
#!/usr/bin/env perl use strict; use warnings; use subs "myclear"; my $var = 1; myclear; print $var; sub myclear () { $var = 0; }
此外,由于这种程序命令很可能作为自己的语句发生,因此它实际上不需要空原型或任何原型.
#!/usr/bin/env perl use strict; use warnings; use subs "myclear"; my $var = 1; myclear; print $var; sub myclear { $var = 0; }