Perlを使ってCGIを作っています。
そこで、資料請求フォームを送信した時に、CSV形式で出力するんですけど、ファイル名を現在日時を取ってきて例えば200108.csvみたいに年と月を付けたファイルを作って、出力させたいのですが、どうやって良いのか困ってます。
お教え願えないでしょうか。
よろしくお願いします。

A 回答 (4件)

ファイルの新規作成の方法がわからない、


ということなのでしょうか?

日付の取得は、下にみなさんが書いておられる方法で
バッチリだと思われるので。

下の方が書いている方法で日付を取得して、$date_strに格納し、


$file = "$date_str.csv";
#↓日付と同じファイル名がなかったら、ファイルを作成
if(!open(F,">$file")){open(">>$file");chmod 0666,$file;}


これで出来るとは思いますが、

中程に書いてある chmod 0666 は、
ファイルのパーミッションを変更するコマンドですので、
このコマンドが効かないサーバでは、
ファイルを作成できない可能性があります。
(プログラムから新規にファイルを作成することが出来ないサーバもあります。)

そうなったら、サーバを変えるしか方法はないと思われます。

ひとまずやってみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2001/11/20 15:24

miya_777さんの回答に補足:




#--ローカルタイムを取得 $yearに年、$monに月が入る
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);

# ただし、$yearはには1900年からカウントした値があるので、
# 年を4桁で表記するには1900を足す必要がある。
$year +=1900;

# また$monには0~11の数値が入るので+1する
$mon = $mon+1; # $mon++ でも可

# 一桁の月(1~9)を2桁にする 例) 8->08 9->09
$mon = sprintf('%02d',$mon);

$file = "$year$mon.csv";

#これで2001年8月の場合は$fileが"200108.csv"になるはずです。

この回答への補足

ご解答ありがとうございます。
上記のようにしてみたのですが、ファイルが作られませんでした。

補足日時:2001/08/30 16:26
    • good
    • 0
この回答へのお礼

サーバを変更しましたら、freeskさんのやり方できちんと作ることができました。
ありがとうございました。

お礼日時:2001/11/20 15:24

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtimZ(time);



とすれば、$yearと$monに年と月が入ります。
これを使えばOKかと。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。
でも、初心者の私には上記だけではちょっとわからないです。

お礼日時:2001/08/30 16:26

#!/usr/local/bin/perl



$chop($date_str = `date`);
$date_str =~ s/ /_g;
(適当に date_str を編集)
$filename = $date_str . ".cvs";

でどうでしょう?
    • good
    • 0
この回答へのお礼

アドバイス有難うございます。
Perl初心者なもので、$date_strを適当に編集というところが、どうしていいのかよくわからないんですけど、アドバイス感謝しております。

お礼日時:2001/08/30 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報