perlで”<>”をコマンドへ渡し、そのコマンドでフィルターしたものをさらに受け取るにはどうすればよいでしょうか。

具体的には、
---
open( f, ”cmd |” );
while( <f> ) {
フィルタ処理
}
---
への入力を、標準入力からでも引数でも行えるように、スマートに書きたいと思い、”<>” をopenで開いたcmdへそのまま渡す方法があれば、と思ったのですが。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:shuyamakawa No.1

回答回数6ベストアンサー獲得回数0

ポイント25pt

http://www.freeml.com/message/perl@freeml.com/0005145

みんなのHappyコミュニティ! freeml[フリー・エムエル] - メッセージ perl 質問箱 - 5145

標準モジュールの”IPC::Open2”を使用してみてください。

id:stealthinu

やはりOpen2を利用しないと無理でしょうか。

2005/05/12 08:36:59
id:tiopepe No.2

回答回数7ベストアンサー獲得回数0

ポイント25pt

UNIXならopen2()はどうでしょう?まさにその目的で使えます。

id:stealthinu

こちらもOpen2ですね。

やっぱりOpen2を使うのが普通のようですので、Open2で書くことにします。

そもそもなんで open( f, ”cmd |” ) に標準入力が渡るんだろう?そういう仕様なんだろうけども。

2005/05/12 08:43:39
  • id:stealthinu
    grepだと使えないようです

    grepの結果で使いたかったのですが、grepだとデッドロックしてしまうようです。
    ということで、なにか他の手を考えます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません