我需要使用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);
我已经做了大量的谷歌和堆栈溢出搜索类似的问题/答案,还没有遇到任何。
1条答案
按热度按时间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
这样可能更容易。