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;
    }


[INDEX]