我需要使用Perl(v5.10)來處理來自其他應用程序的字符串,其中嵌入了空格,逗號和其他非字母數字字符的八進制值。如何使用Perl轉換混合字符串中的八進制字符值?
例如:這個 - 「11624 \ 0040SE \ 00405th \ 0040St \ 0054 \ 0040Suite \ 0040100」,應該是 - 「11624 SE 5th St,Suite 100」。
我可以使用「echo -e」在Linux命令行中完成所需的工作,但我需要能夠在Perl腳本中進行處理和操作。
axiar @ formdev $回聲-e 「11624 \ 0040SE \ 00405th \ 0040St \ 0054 \ 0040Suite \ 0040100」
11624 SE五街,套房100
我看了字符串::逃生模塊,但它似乎並沒有做我認爲應該做的。
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);
我已經做了很多谷歌和堆棧溢出搜索類似的問題/答案,但尚未遇到任何。
您的專家協助,將不勝感激。
它看起來像八進制部分總是3個字符長,所以我會將'\\ 0([0-7] {1,3})'改爲'\\ 0([0-7] {3} )'而不是。 – AntonH
非常感謝!像Perl正則表達式一樣工作。我確實與SW供應商進行了確認,八進制數將始終爲3位數,所以我採用了AntonH的建議。但是,感謝你們兩位! – SteveHeineck