• ベストアンサー

ファイルの削除

open(FH,">data.dat"); print FH "test"; close(FH); これが書いてあるCGIのページにアクセスすると、 自動的に「data.dat」というファイルが作成されますが、 ファイルを削除することは可能でしょうか? つまり、CGIのページにアクセスすると、「data.dat」 ファイルを削除するということです。 ご教授よろしくお願いします。

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

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

  • ベストアンサー
  • arl_may
  • ベストアンサー率27% (9/33)
回答No.1

"unlink"というファイル操作関数がありますよ。

参考URL:
http://www.rfs.jp/sitebuilder/perl/05/func/unlink.html
if_else
質問者

お礼

ファイル削除できました。 ありがとうございました。

その他の回答 (1)

  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.2

>つまり、CGIのページにアクセスすると、「data.dat」 >ファイルを削除するということです。 一時ファイルとして使用するので処理が終わった時点で 削除したいと言うことでしたら、No.1の方が指摘されて いる方法。(大切な内容を書き出すのであれば、一時 ファイルであっても拡張子を.cgiにしておくとか・・そ の辺のセキュリティに関する部分はあまり詳しくありま せん。すみません。) もしも前回の内容を消したいと言うことであれば、勝手 に消してくれますので放っておく。 見当違いな回答でしたらごめんなさい。

if_else
質問者

お礼

無事ファイル削除することができました。 ありがとうございました。

関連するQ&A

  • ログファイルを削除するcgiプログラム

    ログファイルを削除するcgiプログラム -------------------- $GYOUSUU = $FORM{'GYOUSUU'}; #--- ログファイルオープン open(FH,"***.log"); flock(FH,2); @FILES = <FH>; flock(FH,8); close FH; undef $FILES[$GYOUSUU]; open (FH2,">***.log"); @filew = "@FILES\n"; print FH2@filew; close(FH2); -------------------- となっているのですが、修正後にログファイルの行の頭に、半角スペースが入ってしまいます。 どこを修正すればいいのでしょうか?

    • ベストアンサー
    • Perl
  • 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
  • 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自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。 下記は実験用に作ったソースですが、 作動もしてるのですが、  新規に自動でファイルが作成されるはず が 何故か作成されません。 ちなみに 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
  • javascriptでのファイル更新について

    prototype.jsのAjax.Updaterでファイルを閲覧することはできたのですが、 ファイルを更新する方法が分かりません。 javascriptでファイルを更新することは不可能なのでしょうか。 perlで言うところの ============================== require "./cgi-lib.pl"; &ReadParse(); open(FH, ">> aaa.txt"); print FH $in{'bbb'}; close(FH); ============================== みたいな処理がしたいです。 環境の制約によりcgiが使えないのでなんとかjavascriptで実現できないかと考えています。

  • open関数のファイル操作について

    プログラミング経験ゼロで、CGI及びPerlを勉強しだした者です。 初歩的な質問で恐縮ですが、おわかりになる方ご教授願えますか。 open (ANSWER, ">>data.txt"); print ANSWER "$jikan,$data?n"; close (ANSWER); open関数の箇所を上の様に書いたのですが、自動生成されるはずのdata.txtファイルが見当たりません(CGI-Executablesフォルダ内) ではということで、data.txtファイルを作ってCGI-Executablesフォルダ内に置いてみたのですが、そちらにも書込みされませんでした。 ブラウザではフォーム入力の次に用意した「出力完了」のページに切り替わるのですが、やはり出力はされていないということでしょうか。 どのように修正すれば良いのか困ってます。よろしくお願いします。

    • ベストアンサー
    • Mac
  • バイナリファイルの出力

    「test.dat」というファイルをブラウザから ダウロードさせるためにバイナリ出力をしたいのですが、 空ファイルばかりできて上手くいきません。 以下のようなコードなのですが、どこが悪いでしょうか? ご教授ください。お願いします。 症状:ブラウザからダウンロードすると、ファイル名は正しいが 空のファイルになっている 環境:perl 5.8.7 windows server2003 ----------------------------------------------------------- #!/usr/local/bin/perl print "Content-Disposition: attachment; filename=\"test.dat\"\n"; print "Content-Type: application/octet-stream\n\n"; open(IN, "test.dat"); binmode(IN); binmode(STDOUT); print while (<IN>); close(IN); -----------------------------------------------------------

    • ベストアンサー
    • Perl
  • Perlのtruncateについて

    + test.txt 0 1 2 3 + main.cgi open(FH, "+<test.txt"); my @Log = <FH>; truncate(FH, 0); seek($FileHandle, 0, 0); print(FH "4"); close(FH); これで、main.cgiを実行すると、test.txtの中身は 4 1 2 3 となってしまいます。truncateがきいてないようなのですが、なぜでしょうか。 truncate(FH, 0) or die "error"; とすると、errorと表示されてしまいます。 なぜこうなるのでしょうか。 致命的エラーがでるわけでもないので、環境が悪いわけではないような気がするのですが。 flockをしたいのですが、他にファイルの中身を空にする方法とかありませんか。

    • ベストアンサー
    • Perl
  • ファイルを削除できません

    Dドライブにある コピー ~ test_cgi.htm というファイルが削除できません コピー~test_cgiを削除できません。アクセスできません。 ディスクがいっぱい出ないか、らいとぷろてくとされていないか、 またはファイルが使用中でないかを確認してください。 というメッセージが出ます。 他のファイルはけせるんですが、 どうすればいいですか?

  • これを実行するとエラーが起こります どうしてですか

    #! /usr/local/bin/perl5 $fname="./maru.dat" open(FH,"+<$fname"); flock(FH,2); chomp($kazu=<FH>); $kazu++; seek FH,0,0; print FH "$kazu\n"; close(FH); exit; これを実行するたびに maru.datの中の数が1つ増えるようにしたいのです そこで同じ階層のところに count.cgiとして 上のような記述をして 実行をしたのですが internalerrorが起こってしまうのです どこがおかしいのか教えて下さい

    • ベストアンサー
    • CGI

専門家に質問してみよう