在白色空间的分裂变量

hal*_*ert 12 perl split

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

这是字符串:

NUM8         host01    1,099,849,993  1,099,849,992             1
Run Code Online (Sandbox Code Playgroud)

我试过以下但没有成功.

my @array1 = split / /, $VAR1;

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

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

my @array1 = split /\s+/, $VAR1;
Run Code Online (Sandbox Code Playgroud)

我想最终得到:

$array1[0] = NUM8
$array1[1] = host01
$array1[2] = 1,099,849,993
$array1[3] = 1,099,849,992
$array1[4] = 1
Run Code Online (Sandbox Code Playgroud)

拆分这个的最好方法是什么?

谢谢!

cho*_*oba 28

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

my @array1 = split ' ', $VAR1;
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,它几乎等同于你的最后一个选项,但它也删除了任何前导空格.)


Dar*_*jax 9

试试使用:

my @array1 = split(' ',$VAR1);
Run Code Online (Sandbox Code Playgroud)

键盘演示

来自Perldoc:

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


Сух*_*й27 7

\s+ 匹配 1 个或多个空格,并对其进行拆分

my @array1 = split /\s+/, $VAR1;
Run Code Online (Sandbox Code Playgroud)