消除不可见的字符perl



我有一个perl变量,它正在从另一个脚本的STDOUT:中读取

$var = `someScript.sh`
print $var    <---- Prints "somestring"

但是,该变量包含的不仅仅是"somestring"。变量前面还有15个字符(特殊和非特殊但隐藏)在打印时不会显示。

length($var)  <--- Returns a number 10-15 larger than "somestring" has chars

我可以消除这样的特殊字符:

$var =~ s/[^[:print:]]+//g

但似乎也有非特殊字符,一旦特殊字符被删除,就会显示出来:

print $var   <---- Displays "0;<hostname>somestring" 
            (where <hostname> is the system hostname)

有没有办法消除被隐藏的特殊字符和非特殊字符?我希望能够使用$var作为哈希的密钥,然后通过"somestring"引用它

$hash{$var} = 123
print $hash{'somestring'} 

想法?

我们可以假设要删除的字符在不可打印字符之前吗?

如果是这样的话,也许是类似的东西

$var =~ s/.*[^[:print:]]+//;

可以工作吗?

最新更新