18

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

文字列は次のとおりです。

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

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

4

3 に答える 3

36

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

my @array1 = split ' ', $VAR1;

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

于 2013-06-05T17:28:12.340 に答える
11

使ってみてください:

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

コードパッドのデモ

Perldocから:

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

于 2013-06-05T17:29:20.777 に答える
8

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

my @array1 = split /\s+/, $VAR1;
于 2013-06-05T17:30:44.033 に答える