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 に答える