こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CSVファイルに出力

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

投稿日時 - 2001-08-24 17:48:28

QNo.123741

すぐに回答ほしいです

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

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-27 15:48:58

補足

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

投稿日時 - 2001-08-30 16:26:39

お礼

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

投稿日時 - 2001-11-20 15:24:10

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ファイルの新規作成の方法がわからない、
ということなのでしょうか?

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

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


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


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

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

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

ひとまずやってみてはいかがでしょうか。

投稿日時 - 2001-09-04 00:03:35

お礼

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

投稿日時 - 2001-11-20 15:24:54

ANo.2

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

とすれば、$yearと$monに年と月が入ります。
これを使えばOKかと。

投稿日時 - 2001-08-24 18:30:26

お礼

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

投稿日時 - 2001-08-30 16:26:27

ANo.1

#!/usr/local/bin/perl

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

でどうでしょう?

投稿日時 - 2001-08-24 18:17:49

お礼

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

投稿日時 - 2001-08-30 11:13:49

あなたにオススメの質問