Tutorialspoint.com: Perl - Форматы: Скаляр найден там, где ожидается оператор - PullRequest
2 голосов
/ 05 октября 2019

Согласно этому руководству это должно работать.

Я проверил это в 5.14 (и 5.16), и, похоже, оно работает. Это не работает в 5.28. Однако кажется, что в perldoc perlform они все еще задокументированы как работающие.

#!/usr/bin/perl

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name $age
@#####.##
$salary
===================================
.

select(STDOUT);
$~ = EMPLOYEE;

@n = ("Ali", "Raza", "Jaffer");
@a  = (20,30, 40);
@s = (2000.00, 2500.00, 4000.000);

$i = 0;
foreach (@n) {
   $name = $_;
   $age = $a[$i];
   $salary = $s[$i++];
   write;
}

На 5.28 я получаю

Scalar found where operator expected at ./test.pl line 6, near "$name $age"
        (Missing operator before $age?)
syntax error at ./test.pl line 6, near "$name $age"
Execution of ./test.pl aborted due to compilation errors.

В какой версии была изменена эта функция? Было ли это документированным изменением в Perl?

1 Ответ

3 голосов
/ 05 октября 2019

Это удаление было в списке переменных без запятой, что вызывает предупреждение еще в 5.14.

Использование списка переменных без запятой не рекомендуется в строке 6.

Добавление запятой заставляет работать в 5.26,

format EMPLOYEE =
===================================
@<<<<<<<<<<<<<<<<<<<<<< @<< 
$name, $age
@#####.##
$salary
===================================
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...