perl-CGI(シェルスクリプト含)で、自分のドキュメントルート外のファイルのタイムスタンプを取得する
CGIとして実行するとwwwとか何かしらのユーザーとして実行するので、権限についての対処が必要となります。
以下の手順で行いました。
- コピー先のフォルダのパーミッションを777にしておく
- cp -pでタイムスタンプを保持したままコピー
- statで取得
#!/usr/bin/perl use strict; use warnings; #ファイルをコピー system "cp -p /home/user_foo/bar.txt ./copy/bar.txt"; #更新時刻を取得 my $file_date = (stat'./copy/bar.txt')[9]; my ($sec, $min, $hour, $day, $month, $year) = localtime($file_date); #表示確認 print "Content-Type: text/html; charset=Shift_JIS", "\n\n"; printf("%04d/%02d/%02d %02d:%02d:%02d\n", $year + 1900, $month + 1, $day, $hour, $min, $sec);
- 参考にしたサイト
stat - ファイル情報の取得
UNIXコマンド - cp
http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9B%B4%E6%96%B0%E6%99%82%E5%88%BB