子程序Perl的问题

时间:2016-10-19 23:29:55

标签: perl subroutine

我正在尝试执行Perl程序,但窗口只会关闭。但如果我选择窗口的一部分,它会保持打开状态,然后按 Enter 并说

  

未定义的子程序& genNumeros :: crearNumero在第17行调用....

genNumeros.pm

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;

main.pl

#!/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";
<>;

1 个答案:

答案 0 :(得分:-2)

您的包名和相应的文件名应使用大写字母,本地名称应全部为小写

因此,您的资料库应位于文件GenNumeros.pm中,并应以package GenNumeros

开头

应该定义子例程generador_multiplicativocrear_numero

您的主程序文件应为use GenNumeros

导入标识符的常用方法是在库代码中使用Exporter,但是完全限定子例程,如GenNumeros::generador_multiplicativo也很好