web-dev-qa-db-ja.com

空白で変数を分割

文字列を配列に分割しようとしていますが、分割は空白で発生します。テキストの各ブロックは、多数の(可変)スペースで区切られます。

ここに文字列があります:

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

これを分割する最良の方法は何ですか?

13
hallert

splitの最初の引数が文字列 ''(スペース)である場合、それは特別です。任意のサイズの空白と一致する必要があります。

my @array1 = split ' ', $VAR1;

(ところで、最後のオプションとほぼ同じですが、先頭の空白も削除されます。)

30
choroba

使用してみてください:

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

コードパッドデモ

Perldoc から:

別の特殊なケースとして、PATTERNが省略されているか、単一のスペース文字で構成されるリテラル文字列( ''や "\ x20"など、/ /ではない)の場合、splitはコマンドラインツールawkのデフォルトの動作をエミュレートします。この場合、EXPRの先頭の空白は、分割が行われる前に削除されます

10
DarkAjax

\s+ 1つ以上の空白に一致し、空白で分割されます

my @array1 = split /\s+/, $VAR1;
4
Сухой27