在Perl中,如何连接前两行输入?

在Perl中,如何连接前两行输入?,perl,Perl,如何使用perl转换此多行: Colours: Red Green Yellow Blue 在: 那么: $string =~ s/\n/ /; 那么: $string =~ s/\n/ /; 简单的问题,简单的回答: #/usr/bin/perl 严格使用; 使用警告; 我的$str='颜色: 红色 绿色 黄的 蓝色'; $str=~s/\n/; 打印“$str\n”; 简单问题,简单答案: #/usr/bin/perl 严格使用; 使用警告; 我的$str='颜色: 红色 绿色 黄的

如何使用perl转换此多行:

Colours:
Red
Green
Yellow
Blue
在:

那么:

$string =~ s/\n/ /;
那么:

$string =~ s/\n/ /;

简单的问题,简单的回答:

#/usr/bin/perl
严格使用;
使用警告;
我的$str='颜色:
红色
绿色
黄的
蓝色';
$str=~s/\n/;
打印“$str\n”;

简单问题,简单答案:

#/usr/bin/perl
严格使用;
使用警告;
我的$str='颜色:
红色
绿色
黄的
蓝色';
$str=~s/\n/;
打印“$str\n”;

Unicode换行符图示符是
\R
,从v5.10开始就受支持

因此,可以通过以下方式将整个文件中的第一个换行符更改为空格:

$ perl -Mv5.10 -CSD -i.orig -0777 -pe 's/\R/ /' some_utf8_file.txt
还有其他一些方法不会如此浪费内存,但它们可能很难做到正确。您可以省略
-0777
,看看在这种情况下这是否足够好


编辑:正则表达式转义 以下是正则表达式支持的转义,包括它最初在哪个版本中得到支持,版本号从v5.6开始向偶数进位

释放Rx转义含义
=======  ==========  ===========================================================================================
v1.0\0匹配字符号0(U+0000,NULL,NUL)。
v1.0\0N\0NN将八进制字符匹配到八进制077。
v1.0\N如果不在charclass中,则匹配第N个捕获组(十进制),如果不在charclass中,则匹配第N个捕获组(十进制),否则匹配(八进制)字符,直到八进制377。
v1.0\NN匹配第n个捕获组(十进制),如果不在charclass中,则匹配第n个捕获组(十进制),否则匹配第n个(八进制)字符,直到八进制377。
v1.0\NNN如果不在charclass中,则匹配第n个捕获组(十进制),如果不在可见的范围内,则匹配第n个捕获组(十进制),否则(八进制)字符最多为八进制377。
v4.0\a匹配警报字符(警报,BEL)。
v5.0\n仅在字符串开头为True,不在charclass中。
v1.0\b仅在charclass中匹配退格字符(退格,BS)。
v1.0\b在Unicode单词边界处为True,仅在charclass之外。
v1.0\B如果不在Unicode字边界,不在charclass中,则为True。
v4.0\cX匹配ASCII控制字符control-X(\cZ、\c[、\c?)等)。
v5.6\C即使在UTF-8(危险!)中也要匹配一个字节(C字符),而不是在charclass中。
v1.0\d匹配任何Unicode数字字符。
v1.0\D匹配任何Unicode非数字字符。
v4.0\e匹配转义字符(转义、ESC,而不是反斜杠)。
v4.0\E结束大小写(\F、\L、\U)或quotemeta(\Q)转换,仅当插入时。
v1.0\f匹配换页字符(换页,FF)。
v5.16\F Foldcase(非小写)直到\E,仅当插入时。
v5.10\g{GROUP}与命名或编号的捕获组匹配,而不是在charclass中。
v5.0\G在先前m//G或pos()设置的匹配结束位置为True,不在charclass中。
v5.10\h匹配任何Unicode水平空白字符。
v5.10\H匹配除水平空白外的任何Unicode字符。
v5.10\k匹配命名的捕获组;也是\k“名称”,不在charclass中。
v5.10\K保持文本在\K左侧不匹配,而不是在charclass中。
v4.0\l仅限小写(非折叠式)下一个字符,仅限插入时。
v4.0\L小写(非折叠式)直到\E,仅当插入时。
v1.0\n匹配换行符(通常为换行符,LF)。
v5.12\N匹配除换行符以外的任何字符。
v5.6\N{NAME}匹配命名字符或命名别名,或者如果在charclass命名序列之外,但仅当插入并加载CharName时匹配。
v5.14\o{NNNNNN}匹配以任意数量的八进制数字给出的字符。
v5.6\p{PROP}将任何字符与命名属性匹配。
v5.6\P{PROP}匹配没有命名属性的任何字符。
v4.0 \Q引用(反元)元字符直到\E。
v1.0\r匹配返回字符(通常为回车符,CR)。
v5.10\R仅匹配charclass之外的任何Unicode换行符图示符。
v1.0\s匹配除\cK之外的任何Unicode空白字符。
v1.0\S匹配任何Unicode非空白字符或\cK。
v1.0\t匹配制表符(字符列表,HT)。
v4.0\u标题框(非大写)仅限下一个字符,仅限插值时。
v4.0\U大写(而非titlecase)直到\E,仅当插入时。
v5.10\v匹配任何Unicode垂直空白字符。
v5.10\V匹配除Unicode垂直空格以外的任何字符。
v1.0\w匹配任何Unicode“word”字符(字母、数字、组合符号和连接器标点)
v1.0\W匹配任何Unicode非单词字符。
v4.0\xH匹配一个十六进制数字中给定的字符。
v4.0\xHH匹配两个十六进制数字中给定的字符。
v5.6\x{hhhh}匹配以任意十六进制数给出的字符。
v5.6\X匹配Unicode扩展grapheme群集,仅在charclass之外。
v5.5\z仅在字符串末尾为True。
v5.0\Z在可选的最终换行之前为True。

Unicode换行符图形是
\R
,并且受
#!/usr/bin/perl

use strict; use warnings;

if (defined(my $first = <DATA>)) {
    chomp $first;
    if (defined(my $second = <DATA>)) {
        $first .= $second
    }
    print $first;
}

print while <DATA>;

__DATA__
Colours:
Red
Green
Yellow
Blue