Как я могу удалить все новые строки из значений хеша? - PullRequest
1 голос
/ 29 июня 2009

Я пытался удалить все новые строки (\n) из значений хеша:

my %var_h = (  "ID"   => " This is Test 
                           This is new line TEST 


                           newline Test end ");

Как удалить все новые строки из значений %var_h?

Я пытался s/\\n//g, но не мог заставить его работать.

Ответы [ 3 ]

13 голосов
/ 29 июня 2009
s:\n::g for values %var_h;

должен сделать трюк.

4 голосов
/ 29 июня 2009

Что вы используете против замены? Вы, кажется, хотите исправить только значения, поэтому я бы использовал ключевое слово values:

for my $value (values %var_h) {
  $value =~ s/\n//g;
}

Альтернативой (по запросу OP) было бы использование карты и среза, хотя я нахожу это намного менее понятным:

@var_h{keys %var_h} = map { s/\n//g } values %var_h;
3 голосов
/ 29 июня 2009

Все остальные решения удаляют \ n из всех значений хэша.

Я не уверен, требуется ли это.

Таким образом, чтобы удалить только из этого единственного значения, которое у вас есть:

$var_h{'ID'} =~ s/\r?\n//g;

Технически s / \ n // g должно быть достаточно, но у меня есть привычка добавлять \ r? до него, поэтому он будет обрабатывать и новые строки в стиле Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...