# Start with a string (a hex number in this case):
my $string = "526f62626965204861746c6579";
# Declare an array to hold the desired 2-char snippets:
my @array;
# Snip snippets from string and put in array:
while ($string) {push @array, substr($string,0,2,"");}
# Say, those look like ASCII codes, don't they?
for (@array) {print chr(hex($_));}
5条答案
按热度按时间jgwigjjp1#
在Perl中,模式匹配运算符在列表上下文中以一种特殊的方式工作。它迭代地处理操作,将模式与上一次匹配后的剩余文本进行匹配。然后,列表由每次应用模式匹配过程中匹配的所有文本组成。
jhiyze9q2#
如果您确实必须使用
split
,可以执行以下操作:但我认为最快的方法是使用
unpack
:这两种方法都有一个“优点”,即如果字符串的字符数为奇数,它将自己输出最后一个字符。
fcwjkofz3#
实际上,要捕获奇数字符,需要将第二个字符设置为可选:
oxcyiej74#
传递给
split
的模式标识了所需的 * 分隔 *。或
这些都是相当糟糕的解决方案。更好的解决方案包括:
k3bvogb15#
我看到了一种更直观(虽然可能效率较低)的方法来解决这个问题:使用“substr”从字符串中切出所需的2个字符的字符串,并使用“push”将它们推到数组中:
运行那个,看看它打印了什么。:-)