• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlでファイルを読み込み重複データの検索)

Perlでファイルを読み込み重複データの検索

このQ&Aのポイント
  • Perlを使用してテキストファイルを読み込み、重複データを検索する方法について教えてください。
  • テキストファイルには1と2の組み合わせが複数回現れますが、それらを重複として扱う方法を知りたいです。
  • 重複データがある場合は、重複したデータを表示するようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

解説: while(<DATA>){#実際は、ファイルハンドル(か<>)になるべき所、DATAにしておくと、__END__から読み込める、この場合は、別にテキストファイルを作るのがめんどくさかったからと、これだけで実行(追試)ができるという意味 chomp;#末尾の改行を切り捨てる、引数が無い時は$_現在の読み込み行に対して実行される $data[$i++]=$_;#現在の行を、あとで元データとして利用するために配列に入れておく $test{$_}++;#既にあったかどうかテストするために行データをキーにハッシュにしておく、値は、出現回数 ($a, $b)=split ",";#今読み込んでる行を「,」で分離する $test{"$b,$a"}++;#逆順の並びでハッシュに登録 } foreach $x (@data){#元のデータを順に取り出す print "$x";#オリジナルの表示 print ",重複" if($test{$x}>1);#ハッシュで、2回以上カウントされていたら重複しているって表示する print "\n";#改行をつけて一行分処理終わり } __END__

souta_n
質問者

お礼

すみませんm(-_-;)m 解説ありがとうございます。 実は >while(<DATA>){#実際は、ファイルハンドル(か<>)になるべき所、DATAにしておくと、__END__から読み込める 既にここから知りませんでした。オイなんで__END__から下のデータが読み込まれるんだ! という感じです。 よくよくコメントを読みながら勉強します。 重ねてありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

while(<DATA>){ chomp; $data[$i++]=$_; $test{$_}++; ($a, $b)=split ","; $test{"$b,$a"}++; } foreach $x (@data){ print "$x"; print ",重複" if($test{$x}>1); print "\n"; } __END__ 1,2 1,3 1,4 1,5 2,1 2,3 2,4 2,5 3,1 3,2 1,2

souta_n
質問者

お礼

でっ・・・できた!あんなに悩んでいたのに、いとも簡単に作ってしまいはった! といっても、コードの意味がわからん! まずはありがとうございます。 だっだれかこのコードの意味を解説してください!おねがいします。(なんとのぉ~、うすぼんやりとはわかります)

関連するQ&A