Perl 小品集 ─ mavica
#!/usr/bin/perl
# mavica.pl
#
# ファイルの年月日をとりだすのに、stat() を使う
# MAVICA の画像ファイルを yymmdd-xxx.jpg 形式にかえる
# 通常の cp コマンドでファイルをコピーすると、ファイルの日付が、アクセス
# した日付になってしまうので、cp -p を用いてフロッピーから作業用ディレク
# トリーにファイルをコピーする
# (例)
# cp -p /mnt/floppy/MVC-*.JPG ./
# MTools あるいは MToolsFM でコピーすれば、もとの日付が保存される
# ファイルの一覧を得る
@list = glob "MVC-*.JPG";
# ダミーのファイルを定義する
$old_name = "";
# ファイルをリストから読み取る
foreach $file (@list){
# ファイルのタイムスタンプを読みとる
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat "$file";
# タイムスタンプをローカルタイムに変える
($second, $minutes, $hour, $date, $month, $year, $day, $days, $daylight) = localtime ($mtime);
# 年月日の整形
$year = $year - 100;
if ($year < 10){
$p_year = "0$year";
}
else {
$p_year = $year;
}
$month++;
if ($month < 10){
$p_month ="0$month";
}
else {
$p_month = $month;
}
if ($date < 10){
$p_date ="0$date";
}
else {
$p_date = $date;
}
# 新しいファイル名をつくる
$new_name = "$p_year$p_month$p_date";
# ファイルの年月日が同じかどうかの判定
# 同じなら番号をふやす
if ($new_name eq $old_name){
$number++;
}
# 同じでなければ 1 からはじめる
else {
$number = 1;
}
# 番号の整形
if ($number < 10){
$p_number = "00$number";
}
elsif ($number < 100){
$p_number = "0$number";
}
# ファイル名の変換
# system ("mv $file $new_name\-$p_number.jpg");
# 画面への出力
print ("$file --> $new_name-$p_number.jpg\n");
# 比較のため以前のファイル名を保存
$old_name = $new_name;
}