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ランキング
-
window.open でのファイル指定方法
-
fgets で値が取得できない
-
VBAコードを張り付け後のエクセ...
-
文字列をカウントする方法
-
ファイルの存在の有無を確かめ...
-
HTMLのフォームで画像と文...
-
fortranのopen文について。
-
行を指定して削除する方法PERL
-
python renameについて
-
awkスクリプトでダブルクォーテ...
-
ListBoxのデータを高速でファイ...
-
ExcelをCSV書き出す場合のシー...
-
C言語で特定の行を抽出する方法...
-
パスから最後のディレクトリだ...
-
ReadLineでの読み出し行を指定する
-
CSVデータの編集の際の重複チェ...
-
ファイル出力の改行コードをLFに
-
ifstream を利用した1行分のテ...
-
vba dir の相対パス
-
配列の中に重複文字列があるか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
fgets で値が取得できない
-
VBA テキストファイルを読み取...
-
ファイル全てを .xlsm に変更し...
-
csvファイルの横方向への改行に...
-
Firefox で file:// で始まる U...
-
VBAコードを張り付け後のエクセ...
-
python renameについて
-
JSP URLに表示される拡張子 .jsp
-
foreach内での変数の扱い?
-
HTMLのフォームで画像と文...
-
drtファイルはどうしたら開...
-
PerlでのUseless use...
-
MySQLにバイナリデータを正常に...
-
複数ファイルを1つにするシェ...
-
テキストファイルの高速な読み...
-
巨大なテキストの最終行を取得...
-
並び方、
-
ファイルの存在の有無を確かめ...
-
Perl の「stringify」の意味に...
おすすめ情報
open (OUT,">newfile.html");
print(OUT &main);
close (OUT);
HFILEではなくOUTでした。