重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【解消】通知が届かない不具合について

perlでプログラムを書いています。躓いたところが
あるのでどうかご協力おねがいします。

a.datとa.cgiがあるとします。
a.datには、
a
b
c
b
a
とデータが入っています。
そこで、datファイルを見てa、b、cというそれぞれ
タイトルが入ったテーブルを自動的に作成させたいです。
(datの中身は増えていくので種類が増えたらテーブルも
増えます。重複はまとめて1個にしたいです)
まずaというテーブル作成→改行→bというテーブル作成
→改行・・・といった感じです。(dat内でアルファベットで昇順)
ファイル操作の追加モードみたいな感じです。

結構考えたのですがコードが思いつかずここにきました。
どうか、考え方だけでもいいのでよろしくおねがいします。

A 回答 (3件)

ちょっとややこしいですが「連想配列」というものがPerlにはあります。


これを利用すると実現できるかと。

例:
@data = ('a','b','c','a','c','d');
foreach (@data) {$str{$_}++;} #とりあえず連想配列に格納
foreach (keys %str) {print "[$_]";} #キーを表示
foreach (values %str) {print "($_)";} #値も表示(おまけ)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/30 13:02

私の考案したものではないのでここに直接はかけませんが、参考URLに記載の方法で配列の重複要素を取り除けるそうです。



このサイトはプロのプログラマが参照していたものを教えてもらったもので、とてつもなくためになります・・・。

参考URL:http://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/30 13:03

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

この回答への補足

a.dat内のデータは削除や保存などの処理はしません。
ただ、a.datのデータを見てそれを配列に入れてから
重複などの処理や表を作る処理をしたいと思っています。

やり方はいろいろあると思いますが、a.dat内をいじる処理以外の方法で作りたいです。説明不足ですみませんでした。ご協力お願いします。

補足日時:2003/06/28 14:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!