Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl中的字符串插值_Perl_String Interpolation_Widechar - Fatal编程技术网

perl中的字符串插值

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 .

我是perl新手,我正在使用《O'reillys学习perl》一书学习。Unicode字符(如书中所述)如下
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是一个更好的解决方案,但他的程序并不是为了提高产品质量。。。我以为他想用语法。。。