perl内のサブルーチンで処理された結果(htmlタグで構成されたもの)を別htmlファイルに出力したいです。
sub index {
print "Content-type:text/html; charset=utf-8\n\n";
&main;
exit;
}
上記cgiにアクセスすると、sub index内のサブルーチン(&main内で処理されたもの)が表示されます。
仮に以下のように処理すると、newfile.htmlの中に&mainとだけテキスト表示されます。
open (OUT,">newfile.html");
print(HFILE &main);
close (OUT);
&mainを展開した状態でhtml出力する方法を教えてください。
何卒よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
モジュールを使っていいなら方法4がおすすめ。
use strict;
use warnings;
use autodie;
use IO::Capture::Stdout;
sub main {
my $number = shift;
print "main function($number)\n";
}
my $file = 'hoge.txt';
# 方法1
{
local *STDOUT;
open STDOUT, '>', $file;
main(1);
close *STDOUT;
}
# 方法2
{
open my $fh, '>>', $file;
local *STDOUT = $fh;
main(2);
close $fh;
}
# 方法3 スカラー入出力を利用する
{
my $output;
open my $stdout, '>', \$output;
local *STDOUT = *$stdout;
main(3);
open my $fh, '>>', $file;
print {$fh} $output;
close $fh;
}
# 方法4 IO::Capture
my $capture_stdout = IO::Capture::Stdout->new;
$capture_stdout->start;
main(4);
$capture_stdout->stop;
{
open my $fh, '>>', $file;
print {$fh} $capture_stdout->read;
close $fh;
}
# 方法5 tie
---
$ perl foo.pl
$ cat hoge.txt
main function(1)
main function(2)
main function(3)
main function(4)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PerlでのUseless use...
-
ファイルの存在の有無を確かめ...
-
MATLABのm-fileについて
-
csvファイルの横方向への改行に...
-
JSP URLに表示される拡張子 .jsp
-
window.open でのファイル指定方法
-
read() on unopened filehandle...
-
VBAで巨大なファイルの途中から...
-
DOSコマンドで、標準出力を出力...
-
空白文字 \\f と\\v の違いに...
-
エラーログ「\\x8ew\\x92\\xe8...
-
エクセルVBAで素数だけを出力す...
-
バッチファイルの作り方(CSV→...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
C言語のバイナリモードでのfsca...
-
テキストファイルの本文中に行...
-
close()で例外が投げられる理由
-
Perlで フォルダ内の全て...
-
log2の「正確な」計算方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
csvファイルの横方向への改行に...
-
python renameについて
-
VBAコードを張り付け後のエクセ...
-
ファイルの存在の有無を確かめ...
-
行を指定して削除する方法PERL
-
VBA テキストファイルを読み取...
-
ファイル全てを .xlsm に変更し...
-
Firefox で file:// で始まる U...
-
fgets で値が取得できない
-
perl ファイルが開かない
-
MATLABのm-fileについて
-
Perl の「stringify」の意味に...
-
PerlでのUseless use...
-
JSP URLに表示される拡張子 .jsp
-
巨大なテキストの最終行を取得...
-
複数ファイルを1つにするシェ...
-
drtファイルはどうしたら開...
-
fopen64について
-
perlで画像をダウンロードしよ...
おすすめ情報
open (OUT,">newfile.html");
print(OUT &main);
close (OUT);
HFILEではなくOUTでした。