関数順 インデックス
目的別 インデックス

構文
 
 split/分割パターン/, 文字列, 分割数
 split/分割パターン/,文字列
 split/分割パターン/
 split

返り値
 
 分割した結果のリスト

説明

  • 指定したパターンで文字列を分割します。
  • 分割数を設定した場合,設定した個数までの分割を行います。
  • 文字列を省略した場合,$_が対象になります。
  • パターンを省略した場合,空白文字(/\s+/)で分割します。
  • パターンには正規表現を使うことができます。

使用例

変数$dataのカンマ区切りの文字列を分割する
#!/usr/bin/perl
use strict;
use warnings;

my $data = 'Alpha,Bravo,Charlie,Delta,Echo';

my @items = split /,/, $data;

foreach my $item (@items) {
  print $item, "\n";
}
変数$dataの値を分割数を指定して=で分割する
#!/usr/bin/perl
use strict;
use warnings;

my $data = 'key=aaa=bbb';

# 分割数の指定あり
my ($key, $val) = split /=/, $data, 2; 
print $key, "\n"; # key
print $val, "\n"; # aaa=bbb
print "\n";

# 分割数の指定なし
my ($key2, $val2) = split /=/, $data; 
print $key2, "\n"; # key
print $val2, "\n"; # aaa
print "\n";
※上記例で分割数の指定がある方は分割数が2となっているため,"key"と"aaa=bbb"の二つに分割されて,それが$keyと$valに格納されています。 分割数の指定がない方は,"key"と"aaa"と"bbb"の三つに分割され,最初の二つが$key2と$val2に格納されています

変数$dataの値を空白文字で分割する
#!/usr/bin/perl
use strict;
use warnings;

my $data = 'Alpha Bravo  Charlie    Delta     Echo';

my @items = split /\s+/, $data;

foreach my $item (@items) {
  print $item, "\n";
}
変数$dataの値を+-*で分割する(分割パターンを分割結果に含める)
#!/usr/bin/perl
use strict;
use warnings;

my $data = '10+9-8*7';

my @items = split /([+\-*])/, $data;

foreach my $item (@items) {
  print $item, "\n";
}
※通常は分割パターンは分割結果に含まれないが,パターンを括弧で囲むと分割結果に含むことができます。

変数$dataの値を一文字ずつに分割する
#!/usr/bin/perl
use strict;
use warnings;

my $data = 'Enjoy Perl!';

my @items = split //, $data;

foreach my $item (@items) {
  print $item, "\n";
}