Строковая интерполяция в Perl
Я новичок в Perl, я учусь с помощью O'reillys Learning Perl
книга. Unicode символы (как написано в книге), как это ♠
может быть напечатан с помощью print "\x{2668}"
, Я использовал foreach loop
распечатать диапазон символов Unicode.
Пример: с 2660 по 2670;
Я написал следующий код,
foreach $num (2660..2670)
{
print "Character for $num is:","\x{$num} \n";
}
Который давал следующий вывод,
Illegal hexadecimal digit '$' ignored at ./Printing_messages.pl line 10.
Character for 2660 is:
Character for 2661 is:
Character for 2662 is:
Character for 2663 is:
Character for 2664 is:
Character for 2665 is:
Character for 2666 is:
Character for 2667 is:
Character for 2668 is:
Character for 2669 is:
Character for 2670 is:
После этого я сделал несколько других настроек, но ничего не получалось. В чем проблема с моей программой? Я не понимаю Есть ли как заставить это работать?
2 ответа
Решение
Вы можете написать что-то вроде:
foreach $num (2660..2670)
{
print "Character for $num is:",eval(qq!\"\\x{$num} \\n\"!);
}
Проблема с вашей исходной программой в том, что perl не может оценить "\x{...}", потому что эта оценка выполняется до интерполяции $num.