• ベストアンサー

他のプログラムとのデータ転送

A、Bという二つのプログラムがあるとします。 Aで入力してもらったデータをBへ送り、Bでその受け取ったデータの処理し、処理したデータをAへ送り返し、Aでその処理したデータを表示させるというプログラムを作ろうとしているところです。 このデータというのは、文字列で構いません。 行う処理は簡単なものなので自力でできますが、どのようにして他のプログラムにデータを受け渡せばよいのか分かりかねます。 どなたかご存じの方がいらっしゃいましたら、ご教授願います。 よろしくお願いします。 ↓(入力) A    →(データ)→    B A ←(処理後のデータ)← B ↓(出力) イメージは、こんな感じです。

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

  • ベストアンサー
  • rafysta
  • ベストアンサー率45% (24/53)
回答No.2

openを使う時に、パイプ("-")と組み合わせることで、他のプログラムの出力の読み取りや、そのプログラムへの入力を行うことができます。 ●Bにデータを渡す <"A"の側> $program_name = 'perl Bprogram.pl'; open FH, "|-", $program_name or die "cannot run sub program: $!"; print FH "渡したいデータ"; close FH; <"B"の側> @received_data = <>; ●Bからデータを受ける <"A"の側> $program_name = 'perl Bprogram.pl'; open FH, "-|", $program_name or die "cannot run sub program: $!"; @recieved_data = <FH>; close FH; <"B"の側> print "送りたいデータ";

その他の回答 (4)

  • t140
  • ベストアンサー率39% (59/150)
回答No.5

AもBもPerlならAプログラム内で入力されたデータをグローバル変数にセット してBをrequireすればいいかと

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

へ~, open2 なんてあるんだ~. perldoc が使えれば, perldoc perlipc をどうぞ.

  • rafysta
  • ベストアンサー率45% (24/53)
回答No.3

パイプ("-") ↓ パイプ("|") 間違えました

noname#25358
noname#25358
回答No.1

 もしBが、Aと同時実行されている別タスクであれば、受け渡し用のテンポラリファイルを作るしかないかもしれません。  ですがBが、Aによって起動されるのであれば、起動時の引数として渡せばいいと思います。

pakoten
質問者

お礼

素早い回答ありがとうございました。

pakoten
質問者

補足

Bは、本来はサーバ上で24時間常駐しているプログラムです。具体的には、コンテンツ変換プログラムです。 ですので、本来の目的は、入力してもらったデータ(コンテンツ)をBへ受け渡し、変換したコンテンツをBから受け取り、Aで表示させるというプログラムを作りたいのです。 さすがに、いきなりは難しいと思ったので、最初は質問文で上述したような簡単なものを作ってみようと思いました。

関連するQ&A