Как избавиться от управляющих символов в perl .. в частности [gs]? - PullRequest
0 голосов
/ 13 сентября 2011

мой код выглядит следующим образом

my $string = $cells[71];
print $string;

, это печатает строку, но там, где должны быть пробелы, есть поле с 01 10.Я открыл его в Notepad ++, и окно превратилось в черный GS (который я предполагаю, что это разделитель групп).

Я посмотрел в Интернете и сказал, что использовать:

s/[^[:print:]]+//g

, нокогда я задаю строку:

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

и запускаю программу, я получаю:

4294967295

Как мне решить эту проблему?

Я сделал то, что сказал ХОББСи это сработало ... спасибо:)

Можно ли как-нибудь напечатать ввод, где находится каждый из этих символов (поле с 1001)?

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

При сопоставлении с регулярным выражением вам нужно быть осторожным, чтобы писать $var =~ /pattern/, а не $var = ~ /pattern/. Когда вы используете второй, вы делаете /pattern/, что является регулярным выражением против $_, возвращая число в скалярном контексте. Затем вы делаете ~, который принимает побитовую инверсию этого числа, затем ($var =) вы присваиваете результат $var. Не то, что вы хотели вообще.

0 голосов
/ 13 сентября 2011

Сначала необходимо назначить переменную, а затем выполнить подстановку:

my $string = $cells[71];
$string =~ s/[^[:print:]]+//g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...