• 締切済み

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

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

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

みんなの回答

noname#25358
noname#25358
回答No.1

 うーん。  もしかしたら可能かも知れませんが、あんまし考えない方がいいと思います。  Perlの標準コマンドにはそのようなものは組み込まれていません。

関連するQ&A

  • サブスクリプトとのファイルハンドル受け渡し

    メインの実行スクリプトの中から、 サブのスクリプトを実行し その結果をメインから与えたファイルハンドルへ出力したいのですが、 うまくいきません。 尚、サブスクリプトは適当な(下記例ですと./sub/)以下に 複数あります。 MAIN.pl --------- my @subs = glob "./sub/*.pl" ; open OUT, "> tmp.txt" ; my $fh = *OUT ; foreach my $sub ( @subs ){ $sub $fh 引数1 引数2; #ここの書き方が特にわかりません } close OUT ; サブスクリプト --------- my $fh = $ARGV[0] ; my $A = $ARGV[1] ; my $B = $ARGV[2] ; print $fh "結果\n" ; ---------

    • ベストアンサー
    • Perl
  • Perlでファイルを読み込みタグを削除する方法

    以下のようなソースを書きました。 HTMLファイルを読み込み、タグを全て削除して他のファイルに書き込むソースです。 しかし、上手く動作しません。 問題点を教えていただけませんでしょうか。 お願いします。 #!/usr/local/bin/perl package www3sub2; sub main(){ open(FH, "<googlefile3_.txt"); my @file = <FH>; close(FH); open(OUTB,"> googlefile6.txt"); foreach(@file){ my $line = $_; $line =~ s/<("[^"]*"|'[^']*'|[^'">])*>//g; print OUTB "$line"; close(OUTB); } } 1;

  • perl の printでのファイルへの指示にて

    独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。   ちなみに下記がソースです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>アクセスカウンタ</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; if ( open ( FH , "count.txt")){ $cnt = <FH>; close( FH ); $cnt++; print"<CENTER>あなたは${cnt}人目の訪問者です。</CENTER>\n"; if ( open(FH, ">count.txt" )){ print FH $cnt; close(FH); } else { print "ファイルの書き込みオープンに失敗しました。\n"; } } else { print "ファイルの書き込みオープンに失敗しました。\n"; } print "</BODY>\n"; print "</HTML>\n"; __END__ ーーーーーーーーーーーーーーーーーーーーーーーーーー

    • ベストアンサー
    • Perl
  • CGIで外部ファイルに書き込みができません

    Perl初心者です。 外部テキストファイルに、HTMLのフォームで入力した情報を書き込み、それを読み込んでHTMLで表示するコードをつくろうとしているのですが、外部ファイルに書き込みができません。(読み込みはできます) コードは以下のとおりです。 #! /usr/bin/perl use strict; my $self = "test.cgi"; my $str = <>; my $filename = "log.txt"; open FH,">$filename"; print FH $str; close FH; my $body; open FH,"<$filename"; my $str2 = <FH>; $body = $str2; close FH; print "Content-type: text/html\n\n"; print <<Q; <html> <head><title>jjj</title></head> <body> <form action = "$self" method = "POST"> <input type = "text" name = "data01" /> <input type = "text" name = "data02" /><br> <input type = "submit" value = "soushinn" /> <hr/> $body </form> </body> </html> Q 環境はMac OS 10.4.11、Apacheを起動して、ローカルでテストしています。 パーミッション等、いろいろ試しましたが、なぜ書き込めないのかよく分かりません。 どなたか原因を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 「print関数は出力先のファイルハンドル」の 出力先?

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

    • ベストアンサー
    • Perl
  • perl の printでのファイルへの指示で

    独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。 下記は実験用に作ったソースですが、 作動もしてるのですが、  新規に自動でファイルが作成されるはず が 何故か作成されません。 ちなみに localhost上で動かしてます。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>test</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; open ( FH ,">tukuruzo.txt"); print FH "tukuruzo"; close ( FH ); print "</BODY>\n"; print "</HTML>\n"; __END__

    • ベストアンサー
    • Perl
  • オブジェクト指向処理

    以下のようにnew{}の中で作成したstrをsub{}の中で利用したいのですが、どうすればよいでしょうか? perlでOOPするにあたり、参考になるような良書がありましたら教えてください。 new { $this = shift; my ($s1, $s2, $s3) = @_; my str = $s1.$s2.$s3; } sub { $this = shift; print str #new{}の中で定義したstr }

    • ベストアンサー
    • Perl
  • read関数で読み込んだ内容をファイルに書き込めない

    バイナリ、asciiのファイルの一部を読み込み、ファイルへ書き出したいのですが、ファイルへ書き出しが上手くいきません。 以下、一部です。 open(FH,$c_file); binmode FH; open(CTFH,">$cd_tmp"); binmode(CTFH); if($i == 1){ $result = read(FH,$cd,677); print $result."\n"; print CTFH $cd; print $cd; } 後でcloseしています。 677byteまでをCTFHに書き込みたいのですが、書き込めていません。 実行した際にprintで$resultには677が出力され、$cdも同様に 677byteの内容が実行時に出力されます。 ちなみにCTFHのファイルは作成されますが0byteと いう形で何も書き出されていない状態になっています。 どうしてなのかわからず煮詰まっています。 アドバイスをください。

    • ベストアンサー
    • Perl
  • perl サブルーチンでのファイル出力結果おかしい

    以下のコードを実行するとカレントディレクトリの配下にある すべてのファイルのリストがコンソールとファイルに出力される はずですが、コンソールに表示されているファイルの一部しか ファイルに出力されていません。 どうも、最後に do_file()を呼び出したときのファイルしか リストされていないようなのですがなぜでしょうか。 どのようにすればよいのでしょうか。 よろしくお願いします。 (Windows7, ActivePerl(v5.16.3)) ----test.pl--------------------------------------------- &do_dir('.'); sub do_dir{  open(FILE2,'>list.txt') or die "$!";  my $dirname=shift;  my $delim='/';  opendir(DIR,$dirname) or die "$!";  foreach $entry (readdir(DIR)){   next if($entry eq '.');   next if($entry eq '..');   if ($dirname=~/[\\\/]$/) {    my $delim='';   }   my $filename="$dirname$delim$entry";   if(-d $filename){    &do_dir($filename);   } else {    &do_file($filename);   }  }  close(DIR);  close(FILE2); } sub do_file{  my $filename=shift;  return unless ($filename=~/\.*$/);  print "$filename\n";  print FILE2 "$filename\n"; }

    • ベストアンサー
    • Perl
  • Perlでのファイル一括読み込み

    Perlにてファイルの一括読み込みを以下記述で実施しております。 実行環境はAIXです。 ------------------------------- #!/usr/bin/perl open(FH,"/tmp/filename1.txt"); @aaa=<FH>; close(FH); print "@aaa\n"; ------------------------------- 上記内容をWindows XPにて実行した場合、何も表示されません。 print文が動いていないのか、ファイルの読み込みができていないのか不明です。 ファイルのパスは以下のように変更しております。 ------------------------------- open(FH,"C:\filename1.txt"); @aaa=<FH>; close(FH); print "@aaa\n"; ------------------------------- Windowsにて動作するようにはどのようにすれば宜しいのでしょうか? 初歩的な質問かもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • Perl