Perl: Скаляр обнаружил, где ожидается оператор в сценарии
Не могу найти ответ в Google, ни понять это сам. Win7 64bit Это perl 5, версия 22, subversion 3 (v5.22.3), созданная для MSWin32-x86-multi-thread-64int из активного состояния с модулями 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> test.pl 012456 0123456
Создание EXE-файла: pp -o test.exe test.pl
Вывод EXE:
C: \ Users \ timo> test.exe Скаляр обнаружил, где ожидался оператор в строке 17 script /test.pl, рядом с синтаксической ошибкой "} $add" (отсутствует оператор до $add?) В строке 17 script/test.pl, рядом "} $ add" Глобальный символ "$idx" требует явного имени пакета (вы забыли объявить "мой $idx"?) в строке script/test.pl 18. Глобальный символ "$idx" требует явного имени пакета (вы забудьте объявить "my $idx"?) в строке script/test.pl 19. Глобальный символ "$idx" требует явного имени пакета (вы забыли объявить "my $idx"?) в строке script/test.pl 21 Глобальный символ "$idx" требует явного имени пакета (вы забыли объявить "мой $idx"?) В строке 22 script/test.pl.
Я получаю ту же ошибку, когда EXE создается с помощью perl2exe или pp. Может ли это быть из-за того, что где-то скрывается какая-то другая версия binsearch_pos?
Я потерялся.
БР, Тимо