如何使用perl将空格转换为新行?

时间:2017-06-22 12:42:56

标签: perl

我有以下输入,它存储在名为$ var1。

的单个标量变量中

输入(即存储在$ var1中)

Gain Dead_coverage Export_control Functional_coverage Function_logic top dac_decoder Datapath System_Level Black_DV Sync_logic temp1 temp2 temp3 temp4 temp5 temp6 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263

预期产出:

Gain 
Dead_coverage 
Export_control 
Functional_coverage 
Function_logic 
top 
dac_decoder 
Datapath 
System_Level 
Black_DV 
Sync_logic 
temp1 
temp2 
temp3 
temp4 
temp5 
temp6 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

我的代码:

我曾尝试过以下正则表达式。

$var1=tr{\s}{\n};

上面的正则表达式没有带来我预期的输出。

注意:这些数字最多可以包含n个数字,并且该字符可以以大写或小写开头或结尾。无论我需要带来什么样的预期输出。对于那个正则表达式我可以使用它。

要求:

1.split space into new line.
2.for numbers(i.e 123456789101112.....) it should be considered as  follows
1
2
3
4
5
6
7
8
9
10
11
12
.
.
.
so on,...

After digit 9 the other numbers should be considered as double digit.

1 个答案:

答案 0 :(得分:1)

tr是音译。这只适用于个别角色,而不适用于模式。您需要将s////g修饰符一起使用。

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

您也可以使用splitjoin

执行此操作
$var1 = join "\n", split / /, $var1;

即使有很多字符串,它在性能方面也不应有所作为。