如何用Perl转换混合字符串中的八进制字符值?

smdncfj3  于 2023-05-18  发布在  Perl
关注(0)|答案(1)|浏览(149)

我需要使用Perl(v5.10)来处理字符串从另一个应用程序与嵌入式八进制值的空格,逗号和其他非字母数字字符。
例如:这个-“11624\0040SE\00405th\0040St\0054\0040Suite\0040100”,应该是这个-“11624 SE 5th St,Suite 100”。
我可以在Linux命令行中使用“echo-e”完成我所需要的功能,但我需要能够在Perl脚本中处理和操作。

echo -e "11624\0040SE\00405th\0040St\0054\0040Suite\0040100"

输出:

11624 SE 5th St, Suite 100

我已经看过String::Escape模块,但它似乎没有做我认为它应该做的事情。

use String::Escape qw(backslash unbackslash);

my $strval = "11624\0040SE\00405th\0040St\0054\0040Suite\0040100";
my $output = unbackslash($strval);
printf("%s\n", $strval);
printf("%s\n", $output);

我已经做了大量的谷歌和堆栈溢出搜索类似的问题/答案,还没有遇到任何。

0sgqnhkj

0sgqnhkj1#

这类事情通常在正则表达式中很容易做到:
$ perl -E 'say shift =~ s[\\0([0-7]{1,3})][chr oct $1]egr' '11624\0040SE\00405th\0040St\0054\0040Suite\0040100' 11624 SE 5th St, Suite 100
这样可能更容易。

相关问题