我正在尝试将字符串拆分为数组,并在白色空格处进行拆分。每个文本块都由许多(可变)空格分隔。
这是字符串:
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
分割它的最佳方法是什么?
谢谢!
答案 0 :(得分:28)
如果split
的第一个参数是字符串''(空格),则它是特殊的。它应匹配任何大小的空格:
my @array1 = split ' ', $VAR1;
(顺便说一下,它几乎相当于你的上一个选项,但它也删除了任何前导空格。)
答案 1 :(得分:9)
试试使用:
my @array1 = split(' ',$VAR1);
来自Perldoc:
作为另一种特殊情况,split模拟了默认行为 当PATTERN被省略或文字时,命令行工具awk 由单个空格字符组成的字符串(例如''或“\ x20”, 但不是例如/ /)。在这种情况下,EXPR中的任何前导空格都是 在拆分发生之前删除
答案 2 :(得分:4)
\s+
匹配1个或多个空格,并将它们拆分
my @array1 = split /\s+/, $VAR1;