perl:Scalar找到了操作员在脚本中所期望的位置

时间:2017-04-19 11:48:29

标签: perl perl-packager perl2exe

无法在Google找到答案,也无法自己弄明白。 Win7 64bit 这是为活动状态的MSWin32-x86-multi-thread-64int构建的perl 5,版本22,subversion 3(v5.22.3) 模块List :: BinarySearch和PAR :: Packer随cpan一起安装

想法是编辑文本文件并按排序顺序添加数字。以下是重现问题的简短版本。

问题:binsearch_pos在我将脚本作为pl运行时起作用,但是当我从中创建一个独立的EXE时失败。

重现的代码:

    #!\usr\bin\perl
use strict;
use warnings;
use List::BinarySearch qw/binsearch_pos/;

my @numbers=(0,1,2,4,5,6);
print @numbers;
print "\n";
@numbers=searchandadd(\@numbers,3);
print @numbers;

#search right idx and add value
sub searchandadd {
    my ($array, $add) = @_;
    my @array = @{$array};
    my @sorted = sort { $a <=> $b } @array;
    my $idx = binsearch_pos { $a <=> $b } $add, @sorted;
    if (0+@sorted == $idx) {
        splice @sorted, $idx, 0, $add;
    } else {
        splice @sorted, $idx, 0, $add
        if $sorted[$idx] ne $add;
    }
    return @sorted;
}

预期输出(目前来自test.pl):

  

C:\ Users \ timo&gt; test.pl 012456 0123456

EXE创作: pp -o test.exe test.pl

EXE输出:

  

C:\用户\蒂莫&GT; TEST.EXE    Scalar找到了运算符在脚本 /test.pl第17行附近的位置,靠近&#34;} $ add&#34;           (在$ add之前缺少运算符?)脚本/ test.pl第17行的语法错误,接近&#34;} $ add&#34;全球符号&#34; $ idx&#34;要求   显式包名(你忘了宣布&#34;我的$ idx&#34;?)at   script / test.pl第18行。全局符号&#34; $ idx&#34;需要明确的包装   名字(你忘记在script / test.pl第19行声明&#34;我的$ idx&#34;?)   全球符号&#34; $ idx&#34;需要明确的包名(你忘记了吗?   在script / test.pl第21行声明&#34;我的$ idx&#34;?)全局符号&#34; $ idx&#34;   需要明确的包名(你忘了申报&#34;我的$ idx&#34;?)   在script / test.pl第22行。

当使用perl2exe或pp进行EXE时,我得到同样的错误。这可能是因为某些其他版本的binsearch_pos潜伏在某个地方吗?

我输了。

BR, 蒂莫

0 个答案:

没有答案