Perl remove caracteres em uma string

0

Eu tenho uma variável $ cbDescription em um script Perl. Quando imprimo $ cbDescription, recebo o seguinte:

tIP SOLD -5 /ESH4 @1832.00

Eu quero remover qualquer + ou - ou @ sinais ou vírgulas da seqüência de caracteres, então eu tenho a seguinte linha:

$cbDescription =~ s/[+-\@,]//g;

Espero que essa linha altere $ cbDescription para:

tIP SOLD 5 /ESH4 1832.00

Mas quando eu imprimo $ cbDescription depois dessa linha, eu recebo:

tIP SOLD  ESH

Por que também removeu todos os números e o ponto decimal?

pacoverflow
fonte

Respostas:

1

- é um delimitador de intervalo entre parênteses sou você precisa fugir dele:

% echo "tIP SOLD -5 /ESH4 @1832.00" | perl -pi -e 's/[+\-\@,]//g'
tIP SOLD 5 /ESH4 1832.00
Teun Vink
fonte
2
Você também pode especificá-lo como o primeiro caractere da classe.
choroba