Comment résoudre l'erreur suivante: “non défini sous-programme &:: resetCounters appelé à”?

Comment résoudre l'erreur suivante: "non défini sous-programme &:: resetCounters appelé à"? La sous-routine a été prototypée mais encore Perl se plaint. Le code suivant est ce que je vais avoir des problèmes avec:

#!/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 = ();
}
swag --- êtes-vous manque le module qui contient la fonctionnalité manquante? Merci de poster un complet minimal de cas de test qui reproduit l'erreur.
Quelle version de Perl utilisez-vous? Un minimum de cas de test fonctionne pour moi sous 5.14.2.
Votre code semble fonctionner ici. Êtes-vous sûr resetCounters n'est pas indéfini quelque part? Je serais tenté de sauter dans le débogueur Perl et trouver quand resetCounters obtient pas défini.
Les prototypes sont complètement inutiles et Considéré comme Nocif. Vous êtes également à l'appel de la sous avec des parenthèses de sorte que même la déclaration anticipée est inutile.
Peut-être il ya un __END__ jeton à l'intérieur de cette troisième yada opérateur. Ou sans terminaison de chaîne, expression régulière, pod, etc.

OriginalL'auteur Matt Pascoe | 2012-01-05