Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件控制中的perl编译错误_Perl_Scope - Fatal编程技术网

条件控制中的perl编译错误

条件控制中的perl编译错误,perl,scope,Perl,Scope,我做了一个perl脚本,在计算后打印一些句子 我有一个编译错误: 全局符号“$probWord”要求calculIM1.pl第35行有明确的包名。 由于编译错误,calculIM1.pl的执行中止 #/usr/bin/perl 使用严格的;###PLE 使用警告; my$infle=“tot1.txt”; my$outFile=“restEMI.txt”; my%hashFR=getVocab(“ReglesFR1_1.txt”); 我的结果; 我的$bloc=50000; 我的$cmp=0;

我做了一个perl脚本,在计算后打印一些句子 我有一个编译错误:

全局符号“$probWord”要求calculIM1.pl第35行有明确的包名。 由于编译错误,calculIM1.pl的执行中止

#/usr/bin/perl
使用严格的;###PLE
使用警告;
my$infle=“tot1.txt”;
my$outFile=“restEMI.txt”;
my%hashFR=getVocab(“ReglesFR1_1.txt”);
我的结果;
我的$bloc=50000;
我的$cmp=0;

在中打开文件,“
$probWord
超出了代码的范围。请参阅下面的代码注释。 这是一篇关于它的好文章,您一定会在阅读后理解代码的错误:

另请注意:修复缩进,代码很难阅读和维护。如果缩进不正确,您将遇到许多类似的错误,因为您将迷失在自己的代码中。

我猜这行代码:

if ($probWord !=0){
应该是:

if ($probWords !=0){
//       ____^

此:if($probWord!=0){问题是var
$probWord
是词汇范围的,您在一个块中声明它,然后在另一个块中调用它。如果没有此条件,则scrip可以正常工作。尝试使其全局化-即在
while
循环之前定义
$probWord
。您应该使用适当的缩进来避免此类问题。但是我不想给OP一个这样的答案,但是更好的办法是理解错误为什么会发生,而不是如何修复它使其消失。这是perl中最常见的错误之一,OP似乎没有太多的经验在perl中发布这样一个问题,并从缩进判断。。。
if ($probWord !=0){
if ($probWords !=0){
//       ____^