• ベストアンサー

perlで重複をさせない処理

perlでプログラムを書いています。躓いたところが あるのでどうかご協力おねがいします。 a.datとa.cgiがあるとします。 a.datには、 a b c b a とデータが入っています。 そこで、datファイルを見てa、b、cというそれぞれ タイトルが入ったテーブルを自動的に作成させたいです。 (datの中身は増えていくので種類が増えたらテーブルも 増えます。重複はまとめて1個にしたいです) まずaというテーブル作成→改行→bというテーブル作成 →改行・・・といった感じです。(dat内でアルファベットで昇順) ファイル操作の追加モードみたいな感じです。 結構考えたのですがコードが思いつかずここにきました。 どうか、考え方だけでもいいのでよろしくおねがいします。

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

  • ベストアンサー
  • feininger
  • ベストアンサー率41% (74/180)
回答No.2

ちょっとややこしいですが「連想配列」というものがPerlにはあります。 これを利用すると実現できるかと。 例: @data = ('a','b','c','a','c','d'); foreach (@data) {$str{$_}++;} #とりあえず連想配列に格納 foreach (keys %str) {print "[$_]";} #キーを表示 foreach (values %str) {print "($_)";} #値も表示(おまけ)

mitutoshi
質問者

お礼

ハッシュって奴ですね。本に載ってた憶えがあるものの 実際どういう風に使うかわかりませんでした。 本当にありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

私の考案したものではないのでここに直接はかけませんが、参考URLに記載の方法で配列の重複要素を取り除けるそうです。 このサイトはプロのプログラマが参照していたものを教えてもらったもので、とてつもなくためになります・・・。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique
mitutoshi
質問者

お礼

こういうサイトがあると助かりますね。 これから参考にさせていこうと思います。 本当にありがとうございました。

すると、全ての回答が全文表示されます。
  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

a.dat内の重複したものを削除し昇順で並べ替えて保存するってことですか?

mitutoshi
質問者

補足

a.dat内のデータは削除や保存などの処理はしません。 ただ、a.datのデータを見てそれを配列に入れてから 重複などの処理や表を作る処理をしたいと思っています。 やり方はいろいろあると思いますが、a.dat内をいじる処理以外の方法で作りたいです。説明不足ですみませんでした。ご協力お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A