我正在尝试执行Perl程序,但窗口只会关闭。但如果我选择窗口的一部分,它会保持打开状态,然后按 Enter 并说
未定义的子程序& genNumeros :: crearNumero在第17行调用....
package genNumeros;
use strict;
use warnings;
use Math::Complex;
my $seed = time();
my $a = $seed / 5;
my $c = $seed - 7;
my $x = $seed;
my $m = sqrt($seed % 574) + $seed;
my $numAleatorio;
sub generadorMultiplicativo {
$numAleatorio = ((($a*$x) + $c) % $m);
$x = $numAleatorio;
}
my $letra;
my $residuo;
sub crearNumero {
generadorMultiplicativo();
$residuo = $x / $m;
return int($residuo * 27)
}
1;
#!/usr/bin/perl
use warnings;
use FindBin;
use lib $FindBin::Bin;
use genNumeros;
my @palabra;
open (my $ARCHIVO, '<', "palabras.txt") or die ("No se encontro el archivo palabras.txt, $!");
while (my $palabra = <$ARCHIVO>) {
chomp $palabra;
push @palabra, $palabra;
}
close $ARCHIVO;
my $palabraAleatoria = $palabra[ genNumeros::crearNumero() ];
print "$palabraAleatoria\n";
<>;
答案 0 :(得分:-2)
您的包名和相应的文件名应使用大写字母,本地名称应全部为小写
因此,您的资料库应位于文件GenNumeros.pm
中,并应以package GenNumeros
应该定义子例程generador_multiplicativo
和crear_numero
您的主程序文件应为use GenNumeros
导入标识符的常用方法是在库代码中使用Exporter
,但是完全限定子例程,如GenNumeros::generador_multiplicativo
也很好