列表上下文中的perl ord函数

时间:2014-07-31 22:39:49

标签: perl

perl中的ord函数返回字符的数值。可以在列表上下文中调用该函数吗?具体来说,我想将字符串分解为其数字字符值(例如,ABC - > 65, 66, 67)。但是,以下命令未提供预期结果:ord(split(//,$STRING))。我可以使用循环结构,如下所示:

my @NUMERIC=();
for(my $i=0;$i<@STRING;$i++) {
  $NUMERIC[$i] = ord($STRING[$i]);
}

但我希望找到一个单行解决方案,如果可能的话,会从函数中生成列表输出。

2 个答案:

答案 0 :(得分:5)

使用ord可以确定只有一个字符的字符代码。要从字符串中获取代码列表,您可以同时使用splitmap。喜欢这个

my $s = 'STRING';
my @codes = map ord, split //, $s;
print "@codes\n";

<强>输出

83 84 82 73 78 71

答案 1 :(得分:1)

它不会在列表上运行,抱歉。

试试这个:

my $string = 'ABC';
my @numbers;

push @numbers, ord $_ for split '', $string;