从 perl 中的字符串中删除多个新行

remove multiple new lines from a string in perl

我有这样的字符串:

city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232

并且所有行都在一个字符串中,我想打印所有信息,但在一行中带有分隔符。

我试过这个代码:

$val =~ s/\n/\ /;

但什么都没有。

你很接近,你需要修饰符 g

查看此程序的行为,第二个打印显示您想要的内容。

您可以在 perldoc.perl.org 上看到 perlre 中的所有修饰符。

use strict;
use warnings;

my $val = <<'END';
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
END

print $val;

$val =~ s/\n/ /g;

print $val;

我认为音译运算符也可以解决问题:

$val =~ tr/\n/ /;

Transliterate 对字符进行一对一的映射,这意味着它不是多用途的,但它非常适合这样的事情。它还可以做一些很酷的事情,例如:

$val =~ tr/\n/ /s;

其中 "s" 后缀表示采用任意数量的换行符并用单个 space 替换它们,如果你有空白 spaces -- 比如 "address line 2" 是可选的,可能为空。