• 締切済み

配列の比較、抜き出し

foreach (@a){ print "$_"; } と while (($key,$value) =each %b) { @bvalue = split(/\s/,$value); print "$bvalue[16]"; } の$_と$bvalue[16]とを比較して、両方に無い数値をprintしたいのですが、どうすればいいのでしょうか? @aは、1から10までの数字です。 $bvalue[16]は、データの16番目の部分を拾い出した数値で、現在、1 7 3 4の数字が入っています。  よろしくお願いします。

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

%bの内容は、良くわからないので、 $bvalue[16]に1 7 3 4の数字が入った状態でのコードです。 以下のようにして下さい。 #! /usr/bin/perl # 以下の配列にデータがある。 @a = ( 1,2,3,4,5,6,7,8,9,10 ); @b = ( 1,7,3,4 ); foreach(@a){ print " $_"; $aa{$_} = $_; } print "\n"; foreach $x (@b){ $bvalue[16]=$x; print " $bvalue[16]"; delete $aa{$bvalue[16]}; } print "\n"; foreach $key (keys %aa){ print " $aa{$key}"; } print "\n"; #------数値順に表示しなくてよいならここで終わり #------数値順に表示したいなら以下のようにします foreach $key (keys %aa){ push (@result,$aa{$key}); } print "\n"; @result = sort numsort @result; foreach (@result){ print " $_"; } print "\n"; sub numsort { $a <=> $b ; }

luc9
質問者

お礼

返信ありがとうございます。 $bvalue[16]は、@b = ( 1,7,3,4 );の形でなく、データベースの各々の16番目を抜き出したものです。 お手数をお掛けして申し訳ないのですが、 過去ログに、似たような質問を見つけ、アレンジしたら出来ましたので済みとさせて頂きます。 ありがとうございました。 一応、出来たものを書いておきます。 @notfound=(); while (($key,$value) =each %X) { @xvalue = split(/\s/,$value); @ck{@xvalue}=(); } foreach $array_element (@XXX_NO) { push(@notfound, $array_element) unless exists $ck{$array_element}; } foreach (@notfound){ print "<input type=\"radio\" name=\"xxxxx\" value=$_ checked>$_\n"; }

関連するQ&A

専門家に質問してみよう