• ベストアンサー

「print関数は出力先のファイルハンドル」の 出力先?

「print関数は出力先のファイルハンドル」の出力先とはどういう意味なのでしょうか? 本の説明では「次のprint文はファイルハンドルOUTを出力先に指定して$countを出力しています。」と書いてありました。  なんだかこの「出力先」と言うのが理解できないんです。  わかりやすく説明をしてください。   よろしくお願いします!

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

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

  • ベストアンサー
  • shidho
  • ベストアンサー率45% (138/303)
回答No.2

printは、入門段階では画面に文字を表示する関数として 紹介されますが、実際にはいろいろなところに出力が出来ます。 画面以外のいろいろなところに出力するために、 どこに出力するのか指定する必要があります。 これが、出力先です。 で、たとえばファイルに文字を書き出したい、という時には、 ファイル名とファイルハンドルをopen関数で結びつけて、 そのファイルハンドルにprint文で出力することで、 ファイルに書き出すことが出来るようになります。 「最初からファイル名にしてくれればいいじゃん」と 考えるかもしれませんが、こうやってファイルハンドルで 指定する仕組みにしておくと、何かと便利なのです。

torotoro2
質問者

お礼

早速のご回答ありがとうございました。 本の説明ではprint文はHTMLの出力だけしかないと思い込んでいましたが、shidhoさんの説明を聞いて出力先の意味がわかりました!  もう一度、本を読み直したら謎が解けました^^

その他の回答 (1)

  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

open(FILE1, ">test1.txt")||die "$!:test1.txt"; open(FILE2, ">test2.txt")||die "$!:test2.txt"; print FILE1 "aaaa\n"; print FILE2 "bbbb\n"; close(FILE1); close(FILE2); FILE1,FILE2 がファイルハンドル 上記の場合test1.txt に aaaa 、test2.txt にbbbbが書き込まれます。

torotoro2
質問者

お礼

まだそこまで詳しくないですが、なんとなくわかりました。ありがとうございました。

関連するQ&A

  • 同時に二つのファイルにprintする方法

    普通print文は一つのファイルハンドルに出力しますが、それを二つのファイルハンドルに同時に同じ内容を出力する方法はありますか? sub print2 { my $str = shift; print FH1 $str; print FH2 $str; } とすれば一応二つのファイルハンドルに対して出力できますが、print文一つで簡単に済ませる方法があれば知りたいです。 IPC::Open2などがありますが、これは別の目的のものみたいですし・・・ よろしくお願いします。

  • ファイルの出力先の指定方法

    SQL文にてデータベースより取得したデータを「.dat」ファイルにして出力させているのですが、出力先の指定方法が分かりません。 (※現状では指定していないので、テキトーな場所に出力されています) ファイルの出力先を指定する方法ってあるのでしょうか?ご存知の方がおりましたら、教えて下さい。

  • PDFファイルのプリント

    PDFファイルが突然プリントできなくなりました。 プリント画面でファイルの出力という画面がでて 出力先ファイルを聞いてきます。 この出力先ファイルには何を入力すれば良いのでしょう。 ワードなどは普通にプリントできます。

  • 標準出力しながらファイルに出力

    標準出力に表示したものを、そのままファイルに書き込むことは可能でしょうか? 例えば下記のように実現できるかと思いますが、printする度に2行書くのは厳しく思ってます。 ----------------------------- open(OUT, "> outfile.txt") ; print $aaa ; print OUT $aaa ; -----------------------------

  • Perl ファイルハンドルを閉じずに反映させる

    お世話になっております。 Perl(プログラミング言語)について質問です。 openメソッドで開いたファイルハンドルに print文で書込みを行った際に、ファイルハンドルをcloseせずに、 書込みを反映させる方法はありますか? 開くのはファイルではなく(他プロセスへの)パイプです。 $| を設定してもだめでした (例としては perl1.pl , perl2.pl を用意する <perl1.pl> $i; open(OUT,"| perl2.pl") while(1){ print OUT "$i" $i++  } close(OUT) <perl2.pl> while( <STDIN> ) { print $_; } のようなことをやりたいです。 上記のようなスクリプトを実行したところ、 perl1のcloseが実行されるまで反映されません。 これをcloseをせずに反映させる方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • データからある文字列の次の行を出力するには

    perlの初心者です。はじめまして。 質問タイトルそのままなのですが、データからある文字列の次の行を出力するにはどのような記述をすればよろしいでしょうか?よろしくお願いします。 ・データは1ファイルで2000あります。1つのデータは[X,Y]で始まり、次の[X,Y]の前までになります。 ・出力はCSVファイル。 ・DAT errがあった場合はその次の行を出力。なかったら、DAT列は空白にする。 #!/bin/perl open(FILE,"<$ARGV[0]"); open(OUT,">$ARGV[0].csv"); ########################## err count ########################### print OUT "X,Y,NUMBER,DAT,\n"; while(<LOG>){ if($_ =~ /X=(.+)\,Y=(.+)/){ chomp($_); print OUT "\n$1,$2,"; } if($_ =~ /NUMBER (.+)/){ print OUT "$1,"; } if($_ =~ /DAT err/){ print OUT "PASS,0,"; } } close(OUT);

    • ベストアンサー
    • Perl
  • 特殊ファイルハンドルの_(下線)はどうやって使うか

    グローバルな特殊ファイルハンドル_(下線)について、プログラミングPerlでは、 最後に実行したstat、lstat、ファイルテスト演算子の情報をキャッシュするのに用いる特殊ファイルハンドル と説明してあります。 これを試すために、 -f('file'); print(<_>) このコードを実行すると、 readline() on unopened filehandle _ となってしまいます。 特殊ファイルハンドル_(下線)はどうやって使うのでしょうか

    • ベストアンサー
    • Perl
  • [Haskell]handle関数がうまくいかない

    RealWorldHaskellという本を読んでいて解決できないところがあったので質問します。 Control.Exceptionには例外を扱うhandle関数というものがあります。 型シグネチャは Exception e => (e -> IO a) -> IO a -> IO a です。 1つ目の引数に例外を捉えた場合実行する関数を、2つ目の引数に例外を投げる可能性のある関数を与えます。 1つ目の引数の関数の返り値の型と2つ目の引数の型は同じでなければなりません。 次の関数はhandle関数を利用して安全にファイルサイズを取得する(つもりで作った)関数です。 getFileSize :: FilePath -> IO (Maybe Integer) getFileSize path = handle (\_ -> return Nothing ) $ bracket (openFile path ReadMode) hClose $ \h -> do size <- hFileSize h return (Just size) この関数がうまくいきません。 具体的に言えばコンパイルすると handle (\_ -> return Nothing ) の部分で Ambiguous type variable `e0' in the constraint: とエラーは吐きます。 しかし、返り値の型はNothingでMaybe Integerと合致していると思います。 なのにAmbiguousです。 なぜこうなるのかわかりません。 ちなみにControl.OldExceptionでもhandle関数が定義されていますが、ghcのバージョンが新しいせいか(7.0.2)コンパイルできません。 なのでControl.Exceptionしか使えません。 よろしくお願いします。

  • print_r以外の出力方法

    print_r以外の出力方法 print_rでは変数を指定しますが、 現在そのページで保持している変数(スコープの違い、配列など一切構わず)をすべて出力、もしくは確認できる関数はあるのでしょうか?

    • ベストアンサー
    • PHP
  • ファイルの出力先の指定

    現在「/var/www/html」内に「fileread.cgi」というプログラムを制作しています。プログラム中で取得したファイルを「/home/mizumaki/download」に保存したいのですがうまくできません。プログラム中で $file="/home/mizumaki/download/index.html" open(OUT,">$file"); print OUT $data; close(OUT); と指定しても保存されません。「/home/mizumaki/download」には保存できないのでしょうか?

専門家に質問してみよう