perl – 如何解决以下错误“未定义的子程序&main :: resetCounters调用”?

前端之家收集整理的这篇文章主要介绍了perl – 如何解决以下错误“未定义的子程序&main :: resetCounters调用”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我如何解决以下错误“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;
}

猜你在找的Perl相关文章