ファイルハンドルの変更
[上に]
[前に]
[次に]
miyu
[E-Mail]
1999/10/08(金) 16:30:15
掲示板スクリプトを作成しています.
記事の表示部分をhtmlファイルに書き出しておいて,
掲示板を閲覧するだけのときはそのファイルを表示するように
しました.(KENT-Webさんところのsunbbsのようなイメージ)
しかし諸般の事情から,表示部分も他の掲示板のように
cgiで処理して直接ブラウザに表示する形式も作って,
スクリプトの中で両者の処理を選択できるようにすることに
しました.
その際,print文の出力先(ファイルハンドル)が異なるので,
if( htmlファイルに書き出す方法が選択 ){
open( HTML, ">$hogehoege" );
print HTML $hagahaga;
close(HTML);
else( cgiで処理する方法が選択 ){
print STDOUT $hagahaga;
}
というようにすればいいのですが,これをするには
print文の数が多すぎ,また何箇所かに散らばっているので,
使いたくありません.
私の理想では,
------
出力先を{HTMLファイル|標準出力}に変更
if( htmlファイルに書き出す方法が選択 ){ open( HTML, ">$hogehoege" ); }
print $hagahaga;
print ...;
print ...; ←現在選択しているハンドルに出力されているつもり
if( htmlファイルに書き出す方法が選択 ){ close(HTML); }
---
のように,最初にファイルハンドルを指定して変更しない限り
そのハンドルに出力されるようにしたいのですが,
どうしたらいいでしょうか?
できない場合は,あきらめます.;-)
ふじ
1999/10/08(金) 18:25:33
1引数の select を使いましょう。
open HTML, "> hoge.html";
select HTML;
print "hogehoge"; # <-- HTML に出力される
close HTML;
select STDOUT;
ただし、デフォルトの出力先を変更している間に中でサブルーチンを呼び出して、そこで print が
使われている場合は注意しないといけません。
#詳しくはラクダ本か何かを見て下さい。
いけませんが。
miyu
1999/10/09(土) 11:33:14
[[解決]]
どうもありがとうございます.
ほんとうにどんぴしゃりの関数でした.
>ただし、デフォルトの出力先を変更している間に中でサブルーチンを呼び出して、そこで print が
>使われている場合は注意しないといけません。
このとおりの使い方をしていたのですが,特に問題はなさそうでした.
手許にらくだ本がないので確認できませんでした.
[上に]
[前に]
[次に]