在白色空间的分裂变量

时间:2013-06-05 17:23:16

标签: perl split

我正在尝试将字符串拆分为数组,并在白色空格处进行拆分。每个文本块都由许多(可变)空格分隔。

这是字符串:

NUM8         host01    1,099,849,993  1,099,849,992             1

我尝试了以下但没有成功。

my @array1 = split / /, $VAR1;

my @array1 = split / +/, $VAR1;

my @array1 = split /\s/, $VAR1;

my @array1 = split /\s+/, $VAR1;

我想结束:

$array1[0] = NUM8
$array1[1] = host01
$array1[2] = 1,099,849,993
$array1[3] = 1,099,849,992
$array1[4] = 1

分割它的最佳方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:28)

如果split的第一个参数是字符串''(空格),则它是特殊的。它应匹配任何大小的空格:

my @array1 = split ' ', $VAR1;

(顺便说一下,它几乎相当于你的上一个选项,但它也删除了任何前导空格。)

答案 1 :(得分:9)

试试使用:

my @array1 = split(' ',$VAR1);

Codepad Demo

来自Perldoc

  

作为另一种特殊情况,split模拟了默认行为   当PATTERN被省略或文字时,命令行工具awk   由单个空格字符组成的字符串(例如''或“\ x20”,   但不是例如/ /)。在这种情况下,EXPR中的任何前导空格都是   在拆分发生之前删除

答案 2 :(得分:4)

\s+匹配1个或多个空格,并将它们拆分

my @array1 = split /\s+/, $VAR1;