Согласно этому руководству это должно работать.
Я проверил это в 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?