首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ActivePerl 5.20执行的问题

使用ActivePerl 5.20执行的问题
EN

Stack Overflow用户
提问于 2016-10-13 17:20:23
回答 1查看 102关注 0票数 1

我有一个程序,它使用一个模块,它位于与可执行文件相同的文件夹中,但是当我执行它时,它只会关闭。

代码语言:javascript
复制
use strict;
use warnings;
use genLetras;




for my $k (1 .. 30 ) {
        for my $j (1 .. 30 ) {
        genLetras::generarLetra();
        $matriz[$k][$j] = genLetras::generarLetra();
   }
}

for my $i (1 .. 30 ) {
        for my $j (1 .. 30 ) {
                     print "[$matriz[$k][$j]] ";
}
print "\n";
}

<>;

这是可执行文件的代码。

这个是模块的一个

代码语言:javascript
复制
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 generarLetra{
   for my $i(1..30){
   generadorMultiplicativo();
    $residuo = $x/$m;

if($residuo < 0.0384615384615385 ){
       $letra = 'A';
} 
if($residuo > 0.0384615384615385 && $residuo < 0.076923076923077){
       $letra = 'B';
} 
if($residuo > 0.076923076923077 && $residuo < 0.1153846153846154){
       $letra = 'C';
}
if($residuo > 0.1153846153846154 && $residuo < 0.1538461538461538){
       $letra = 'D';
}
if($residuo > 0.1538461538461538 && $residuo < 0.1923076923076923){
       $letra = 'E';
}
if($residuo > 0.1923076923076923 && $residuo < 0.2307692307692308){
       $letra = 'F';
}
if($residuo > 0.2307692307692308 && $residuo < 0.2692307692307692){
       $letra = 'G';
}
if($residuo > 0.2692307692307692 && $residuo < 0.3076923076923077 ){
       $letra = 'H';
}
if($residuo > 0.3076923076923077 && $residuo < 0.3461538461538462){
       $letra = 'I';
}
if($residuo > 0.3461538461538462 && $residuo < 0.3846153846153846){
       $letra = 'J';
}
if($residuo > 0.3846153846153846 && $residuo < 0.4230769230769231){
       $letra = 'K';
}
if($residuo > 0.4230769230769231 && $residuo < 0.4615384615384615){
       $letra = 'L';
}
if($residuo > 0.4615384615384615 && $residuo < 0.5){
       $letra = 'M';
}
if($residuo > 0.4615384615384615 && $residuo < 0.5384615384615385){
       $letra = 'N';
}
if($residuo > 0.5384615384615385 && $residuo < 0.5769230769230769){
       $letra = 'O';
}
if($residuo > 0.5769230769230769 && $residuo < 0.6153846153846154){
       $letra = 'P';
}
if($residuo > 0.6153846153846154 && $residuo < 0.6538461538461538){
       $letra = 'Q';
}
if($residuo > 0.6538461538461538 && $residuo < 0.6923076923076923){
       $letra = 'R';
}
if($residuo > 0.6923076923076923 && $residuo < 0.7307692307692308){
       $letra = 'S';
}
if($residuo > 0.7307692307692308 && $residuo < 0.7692307692307692){
       $letra = 'T';
}
if($residuo > 0.7692307692307692 && $residuo < 0.8076923076923077){
       $letra = 'U';
}
if($residuo > 0.8076923076923077 && $residuo < 0.8461538461538462){
       $letra = 'V';
}
if($residuo > 0.8461538461538462 && $residuo < 0.8846153846153846){
       $letra = 'W';
}
if($residuo > 0.8846153846153846 && $residuo < 0.9230769230769231){
       $letra = 'X';
}
if($residuo > 0.9230769230769231 && $residuo < 0.9615384615384615){
       $letra = 'Y';
}
if($residuo > 0.9615384615384615 && $residuo < 1){
       $letra = 'Z';
}
return;
 }
}

我已经用perl-c和perl -V进行了编译,所有人都说这是正确的。

我在Windows 10上使用ActivePerl 5.20

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 17:25:57

在测试期间,可能会将当前目录设置为脚本所在的目录。可以找到该模块,因为模块搜索路径(@INC)包括.

失败时,可能会将当前目录设置为其他目录。无法找到该模块,因为@INC没有包含它所在的目录。

添加以下内容将脚本的目录添加到@INC

代码语言:javascript
复制
use FindBin qw( $RealBin );
use lib $RealBin;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40027257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档