Perl::joinとかsplitとかmapとかgrepとか

引き続きリャマ本とアルパカ本から。

join


my @foo = (1, 3, 5, 7, 9);
print "\@foo is @foo\n";

my $bar = join ":", @foo;
print "\$bar is $bar\n";

[結果]
@foo is 1 3 5 7 9
$bar is 1:3:5:7:9

配列なんかもひとつにまとめちゃうんだもんね。

split


my @hoge = split(/:/, $bar);

for (@hoge) {
print "$_\n";
}

[結果]
1
3
5
7
9

ひとつの変数だったものをまた配列化できた。

map


my @upup = map { "100$_" } @hoge ;
print "\@upup = @upup\n";

[結果]
@upup = 1001 1003 1005 1007 1009


for (@upup){
print $_ + 2,"\n" ;
}

[結果]
1003
1005
1007
1009
1011

変なのー。

grep


my @goo = qw(2 4 6 8);
my @kis = qw(1 3 5 7 9);

my $num = "2";
my $ok = undef;

$ok = grep {/$num/} @goo ;
print "@goo の中に $num があった\n" if $ok ;

$ok = grep {/$num/} @kis ;
print "@kis の中に $num があった\n" if $ok ;

真偽の他に引数でもの渡してって/pattern/にひっかかったヤツを変数に入れたりすることもできた。

my @matched = grep { eval{/pattern} } @check_list

みたいなヤツ。