- ベストアンサー
perlについて
複数のファイルからデータを配列にして抜き出し,そのデータをある式に代入して,新しいデータを作成するというプログラムを作成しております.複数のファイルから必要なデータのみを抜き出す作業はできたのですが,そのデータをある式に代入するのがうまくいきません. 初歩的な質問で申し訳ないのですが,ぜひアドバイスをよろしくお願いします.簡単な図を書きましたので,お分かりの方はお教えください. Aファイル Bファイル ↓ ↓ DATA1 DATA2 |______| ↓ DATA3=DATA1*DATA2 DATA3を求めることができません.わかりにくい説明で申しえわけないのですが,どうかよろしくお願いします.
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1>自分の書いたプログラム OUTPUTのファイルに関する処理がありません。 配列の2番目の要素を取り出すには $DATA1[1] の様にします。(先頭にスペースがあってsplitによるから要素があるから[2]にしているのならいいですけど) /[a-zA-Z0-9]/ では、アルファベットにもマッチしてしまいます。 また含まれる一文字にマッチしてしまいます。 できたら test.vm.txt test.mat.txt の中身の構成を一部抜粋でいいので補足して下さい
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
@DATA1 =( 1, 3, 7, 2, 4, 10); @DATA2 =( 4, 5, 20,22,12,19); for($i=0;$i<@DATA1;$i++){ push @DATA3, $DATA1[$i]*$DATA2[$i]; } #print join(",",@DATA3); #------------------------------------- というようなことですか? 上記を実行すると @DATA3は 4,15,140,44,48,190 になります。
- Dpop
- ベストアンサー率51% (279/544)
Web屋です。OkWebの様なサイトを設計, 開発する仕事をしています。 うーん。具体性に欠けていて、なにをアドバイスしたら良いのか分りません。 Perlの知識と言うよりも、アルゴリズム的な問題の様な気もしますが。。。 もう少し具体的な話しはできないでしょうか? ある式に代入する。と言う事ですが、その処理の、どう言う部分で苦労されているのでしょうか? その辺りから、まとめて頂けると何かしらのアドバイスができるかも知れません。
補足
説明不足で申し訳ありません. 自分の書いたプログラムを載せて見ます. #!/usr/bin/perl $turgetname="test"; $inf_vm = $turgetname . ".vm" . ".txt"; $inf_mat =$turgetname . ".mat" . ".txt"; open(OUT, $inf_vm); open(OUTPUT, $inf_mat); while($line = <OUT>){ if($line = ~/[a-zA-Z0-9]/){ chomp $line; @FIELD=split(/\s+/,$line); # $inf_vmの配列の2番目と$inf_matの配列の2番目 を掛けた式からDATA3を求めるところがよくわかり ません.二つのファイルを開いた後の処理の仕方も 良く分かりません イメージ的には下のようにしたのですが・・ print "@FILED[2]* @array[2] "; } } close(OUT); うまく説明できずに,申し訳ありません. よろしかったら,アドバイスお願いします.
お礼
ご親切にありがとうございました. まだ,勉強不足で初歩的な質問をしてしまいました.