めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

2つの配列から重複しない値を取り出す

2つの配列から重複しない値を取り出す。


my @temp;
my @temp1 = (1,2,3,4); #範囲
my @temp2 = (1,3,4); #指定されている値
my $max = @temp2;

foreach my $temp1( @temp1 ){
my $count = 0;
foreach my $temp2 ( @temp2 ){
if( $temp1 ne $temp2 ){ $count++; }
}
if( $count == $max ){
push @temp, $temp1;
}
}


いまいち、泥臭い気がするんだけれど。う〜ん。
追記
一応、答えみたいなのが「Perlクックブック〈VOLUME1〉」に記載されているそうです。しかし、私持っていないんですよねぇ。


追記2
Perlクックブックソースコードリンク集Perlクックブックソースコードリンク集」というところに、参考のソースがあります。

追記3
id:bakelattaさんに「はてなダイアリー」という形でいろいろと。
今回は、指定されている範囲(上記のソースだと1〜4)に指定された値があるのかどうか?ということを判別したかったのです。そいう意味では「2つの配列から重複しない値を取り出す」という言い方は、良くなかったかも、と思います。
それにしても、もう少しやり方がありそうな...grepとかmapを組み合わせたりすると、1行になりそうな。うむむ。