私は非常に複雑な問題(初心者の私の見解では)にぶつかり、解決方法がわかりません。ワークフローを考えることはできますが、スクリプトは考えられません。2つの異なるハッシュテーブルを使用して新しいデータ(新しいハッシュ)を生成するPerl
私は次のようなファイルA持っている:教師(タブ)STUDENT1(スペース)Student2(スペース)..
Fiona Nicole Sherry
James Alan Nicole
Michelle Crystal
Racheal Bobby Dan Nicole
の2があるとき、彼らは時々右隣自分の名前に数字を持っています同じ名前(ex、John1、John2)。 2人以上のアドバイザーがいる場合は、重複することもあります。
ファイルBは教師のグループをまとめたファイルです。同様のように見えますが、値はカンマで区切られています。
Fiona Racheal,Jack
Michelle Racheal
Racheal Fiona,Michelle
Jack Fiona
ファイルBのトレンドは、キーに複数の値があり、各値がキーとなり、誰とグループ化されているのかを簡単に見つけることができます。ハッシュへ
- ストアファイルAと:
私は希望の出力は、生徒が先生に基づいて同様の教育を受ける可能性が高いだろう/ groups.So私は次の操作を実行するスクリプトを希望されています閉じる
ファイルBを開いて、各生徒が生徒を持っているかどうかを確認します(実際のリストはかなり大きくなります)。だから私は最初の教師、フィオナを取る場合、それは格納されているファイルを見て、フィオナがあるかどうかを確認するハッシュテーブル。存在する場合(この場合はNicoleとSherry)、それぞれを新しいキーとして新しいハッシュテーブルにポップします。
while (<Group>) { chomp; $data=$_; $data=~/^(\S+)\s+(.*)$/; $TeacherA=$1; $group=$2;
次に、フィオナ(Racheal、ジャック)でグループ化されている先生方のグループを見てください。一人で一人ずつ(Racheal)
if (defined??) { while ($list=~/(\w+)(.*)/) { $TeacherB=$1; $group=$2;
- Rachealの学生のためのファイルAを見てください。
- 手順2で作成した学生キーの値(カンマ区切り)として入力します。
学生 - 学生と教師 - 教師のグループを印刷します。
Nicole Bobby,Dan,Nicole Fiona Racheal Sherry Bobby,Dan,Nicole Fiona Racheal
フィオナのグループの次の先生、ジャックは生徒がいないので、彼はこの結果にはないでしょう。彼が持っていた場合、例えば、ダビデは、その結果は次のようになります。
Nicole Bobby,Dan,Nicole Fiona Racheal Sherry Bobby,Dan,Nicole Fiona Racheal Nicole David Fiona Jack Sherry David Fiona Jack
私はこのような複雑な、特定の質問をするためにとても残念です。私はこのような何かをしている他の人が何らかのチャンスで答えを受けることを願っています。 ご協力いただきありがとうございます。あなたは私の唯一の助けの源です。
私は、ファイルBの内容について困惑しているファイルB内のすべての名前が教師に属しているのですか? –
はい、ファイルBは教師に属します。申し訳ありませんが、私がやっていることや初心者であることが奇妙に思えるかもしれませんが、私は手動でやり始めましたが、私が持っているファイルはここで示した単純化されたスナップショットではなく、私は同時に混乱している。 – absolutenewbie
手作業の代わりにperlを使うのは良い考えでした。 Perlはそのようなものには最適です。 – simbabque