• 締切済み

Perlの出力を、Perlから実行するプログラムの標準入力にしたい

現在データを収集してくるPerlのスクリプトを作っています。 このスクリプトから、ローカルにある、別のrubyスクリプトに、収集してきたデータを渡したいのですが、rubyスクリプトは、標準入力を前提として作られています。 簡単に考えると、一旦ファイルに落として、そのファイルをリダイレクトする形でPerlからrubyスクリプトを起動すればよさそうなのはわかるんですが... なにか他にうまい方法がPerlにはあるはずだといろいろ探しているのですが、見つかりません。 ファイル渡ししか方法は無いのでしょうか?

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

  • meeee
  • ベストアンサー率31% (6/19)
回答No.1

パイプでオープンすればよろしいのでは?

参考URL:
http://www.stackasterisk.jp/tech/program/perl02_01.jsp
miriorg
質問者

お礼

質問を投稿した直後に、"|" でopenする方法を見つけたのでした...。 ありがとうございます。 しかし何でOKWebは24時間経たないと自分の質問を削除出来ないのか...。

関連するQ&A

  • Windows版Perlの標準入力&標準出力

    Windows2000にActive Perl5.6をインストールしています。 標準入力をそのまま標準出力するプログラムを作っているのですが うまく動きません。 DOSコマンドの使い方が間違っているのか、Perlの書き方が間違って いるのか、それともWindows版のPerlではこのような使い方はできない のか、教えてください。 ■プログラムソース(c:\test.pl) while(<>){ print; } ■実行方法 c:\data.dat|test.pl>data2.dat ■データ(data.datの中身) こんにちわ ※実行するとdata2.datにdata.datの内容がCOPYされる 予定なのですが、正しく動きません。

    • ベストアンサー
    • Perl
  • system で実行したプログラムの標準出力を変数で受け取りたい

    実行結果を標準出力に出力する cプログラム A があります。 perl から system を利用して A 呼び出し、その実行結果を perl で加工する仕組みを考えています。 今のところ、標準出力を一旦変更して、テンポラリのファイルに出力させ、再度そのファイルをオープンして perl で利用するという形で何とか実現できています。 open (SAVESTDOUT, ">&STDOUT") or die "..."; #(1) open (STDOUT, ">$tempFile") or die "..."; #(2) system "A"; #(3) close(STDOUT) or die "..."; #(4) open(STDOUT, ">&SAVESTDOUT") or die "..."; #(5) という感じです。 一旦テンポラリーのファイルを介するところがスマートでないので、直接変数に標準出力結果を落したいです。 (1) そのまま (2) 標準出力を perl の変数に変更 (3) そのまま (4) なし (5) そのまま といった感じで実現したい(もちろんより良い解法があれば尚宜しいです)のですが、可能でしょうか? ご教授ください。宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perl変数から外部プログラムの標準入力へ

    Perlのプログラム内部で保持している変数の値をシェルコマンドに与える方法はありますか? $value=12345; や、 @array=('ONE', 'TWO', 'THREE'); などの変数の値を外部コマンド(標準入力を受けることができるコマンド)に渡したいのです。 方法がわからないので、現在は一度ファイルに書き出して、 system('cat file.name | command'); のようにして渡しています。なんか賢くない書き方のような気がするのですが。

    • ベストアンサー
    • Perl
  • 出力ファイル名を標準入力から指定したい。

    初心者ですが、よろしくお願いします。 perlで、data.txtというファイルへ $protein の 情報を書き込みたい場合、以下のようにすれば 良いということはわかるのですが、 open(OUT, ">data.txt"); print OUT $protein; では、出力ファイルを data.txtではなく、プログラムを 実行させる度に標準入力から指定してやることはどうやれば できるのでしょうか?

    • ベストアンサー
    • Perl
  • `ls`標準出力はどこにいった?

    質問が続いて恐縮なのですが、お願いします。 perlスクリプトでshellコマンドを呼び出したとき、 (以下、#!/usr/bin/perl は省略) $y=`ls`; print $y; では結果がターミナルに表示される print `ls`; でも表示される しかし、単に `ls` では何も表示されない。 `ls`; print $_; でも何も表示されない。 `ls [存在しないファイル]` では標準エラーが表示される。 いったい `ls` の標準出力はどこに格納されるのでしょうか?

    • ベストアンサー
    • Perl
  • コンソール出力をテキストに出力する方法(コンソール出力は残しつつ)

    【質問】  Perl内部で実行される実行ファイル(.exe)のコンソール出力(STDOUT,STDERR)をテキストファイルに出力したい。(Perlのコンソール出力も含む。) ※コンソール出力は残しつつ。 (コマンドプロンプトの)パイプとリダイレクトを使用して上手くいくかと思ったのですが、標準出力と標準エラーとでは標準エラーが先に出力されてしまい、本来出力される順番で出力されない。(標準出力はバッファにたまるため??) 何かいい方法はありませんでしょうか? 【環境】  Windows2000  Active Perl 5.8.8

    • ベストアンサー
    • Perl
  • cgi(perl)を実行のみしたい

    HTMLよりCGI(PERL)を起動し、ログファイルの読み書きを実行し、そのまま終了させることは出来ないでしょうか? CGIからデータを戻す必要は無く、ブラウザへの表示はHTMLファイルがそのまま表示される形で問題ありません。 宜しくお願いします。

  • Perl 教えてください。

    下記のような簡単なスクリプトなんですが、なぜかサーバーにアップすると動きません。 ローカルでコマンドプロンプトから直接実行するとまともに動作します。 パーミッションは「755」と「705」でやってみましたが。 perlのパスは合っていますし、実際同じ場所に置いた他のCGIは動作します。 #!/usr/bin/perl open (DT, "<./data/***/***.csv") or die "File '***.csv' Open Error."; @data = <DT>; $data[0] = ",,,,,,\n"; open (OUT,">./data/***/***1.csv") or die "File '***1.csv' Open Error."; print OUT @data; close (DT); close (OUT); 原因が分からず困っています。 解決策でなく、原因と思えるだけの回答で結構ですので何卒よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 標準入力からデータを受け取ってランダムファイル処理させたい

    LINUXでCを使っています。 catでデータを標準出力させ、データ解析プログラムで標準入力から受け取り、そのデータをfseek関数を使ってランダム処理させようとしているのですが、うまくいきません。 具体的には、入力データをfseek関数でファイルポジションを一字分戻らせる処理をさせようとしています。でも、標準入力からデータを受け取るとfseekでファイルポジションを戻してやろうとしても戻りません。 fseekを使うには、一度データをファイルに落とし、fopenで開けてやるしか方法がないのでしょうか?

  • Perlの文字列削除とcsv出力の方法について

    現在、Perlを用いてtxtファイルから必要なデータだけを取り出し、それをcsv ファイルに出力したいと考えております。 Perlはほとんど触ったことがなく、色々と勉強しながら行っているのですが、期 日が迫っているという事情もあり質問させていただきます。 txtファイルには以下のような文が1000行ほどあります。 *○ △ /△/△/△/△/○.txt, ○|○): ○ ○,△:任意の数字、または文字列です。 この内、"○"のものだけを一つ一つ分けてcsvに出力したいのです。 つまり○は4つありますが、出力する際は1つ目の"○"を1行目に、2つ目の"○"を2行 目にといった形にしたいです。 そして、それが1000列分あるということになります。 上手く△のものだけを除外し、○だけを抽出する方法はあるでしょうか? どなたかよい方法をご存知のかたいらっしゃいましたら、教えていただけると幸 いです。 エクセルで行うということも考えましたが、htmlファイルが入力ファイルとなる可能性もあるためPerlで行うことにしました。

    • ベストアンサー
    • Perl

専門家に質問してみよう