8

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

$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'} 

想法?

4

1 回答 1

9

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

如果是这样,也许像

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

可以工作吗?

于 2012-08-27T08:19:09.233 回答