perl中的字符串插值
我是perl新手,我正在使用《O'reillys学习perl》一书学习。Unicode字符(如书中所述)如下perl中的字符串插值,perl,string-interpolation,widechar,Perl,String Interpolation,Widechar,我是perl新手,我正在使用《O'reillys学习perl》一书学习。Unicode字符(如书中所述)如下♠。我正在使用foreach循环打印一系列Unicode字符 例如:从2660年至2670年 我已经编写了以下代码 foreach $num (2660..2670) { print "Character for $num is:","\x{$num} \n"; } 它给出了以下输出 Illegal hexadecimal digit '$' ignored at .
♠可以使用print“\x{2668}”
打印代码>。我正在使用foreach循环
打印一系列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:
在那之后,我做了一些其他的调整,但没有任何效果。我的程序有什么问题?我不明白。有没有办法让它发挥作用?你可以这样写:
foreach $num (2660..2670)
{
print "Character for $num is:",eval(qq!\"\\x{$num} \\n\"!);
}
原始程序的问题是,perl无法计算“\x{…}”,因为此计算是在$num插值之前完成的。您可以编写如下代码:
foreach $num (2660..2670)
{
print "Character for $num is:",eval(qq!\"\\x{$num} \\n\"!);
}
原始程序的问题是perl无法计算“\x{…}”,因为此计算是在插入$num之前完成的。
print "Character for $num is: ", chr($num), "\n";
你想要
print "Character for $num is: ", chr($num), "\n";
它起作用了。非常感谢。eval
是一个函数吗?生成一个Perl程序,编译并运行它是一种严重的过度使用。为此使用eval()
是一种非常糟糕的形式。作为另一个答案,请考虑“<代码> CR())/COD>函数,此程序仅用于教育用途。我是在回答“我在学习…”的问题。当然,char是一个更好的解决方案,但他的程序并不是为了提高产品质量。。。我以为他是在尝试使用语法…它起作用了。非常感谢。eval
是一个函数吗?生成一个Perl程序,编译并运行它是一种严重的过度使用。为此使用eval()
是一种非常糟糕的形式。作为另一个答案,请考虑“<代码> CR())/COD>函数,此程序仅用于教育用途。我是在回答“我在学习…”的问题。当然,char是一个更好的解决方案,但他的程序并不是为了提高产品质量。。。我以为他想用语法。。。