ファイル消しちゃった

しかも2回目。フォルダの中のファイルに対してjpegtranしてファイルサイズ削るためのラッパーなんだけど。また書き直すのもう嫌だから、ここにコード貼り付けておきます。絶対またやらかしそうだしね。

use strict;
use warnings;
use 5.11.2;

my $color_reg = qr/^(01)\./;

opendir my $d, '.' or die $!;
while (readdir $d) {
    next unless /\.jpe?g$/i;
    
    my $o = "o.$_";
    my $op = "op.$_";
    given ($_) {
        when ($color_reg) {
            say "$_ [color]";
            system 'jpegtran', '-copy' => 'none', '-optimize', $_, $o;
            system 'jpegtran', '-copy' => 'none', '-optimize', '-progressive', $_, $op;
        }
        default {
            say "$_ [monochrome]";
            system 'jpegtran', '-copy' => 'none', '-grayscale', '-optimize', $_, $o;
            system 'jpegtran', '-copy' => 'none', '-grayscale', '-optimize', '-progressive', $_, $op;
        }
    }
    
    my @f = map {$_->[0]} sort {$a->[1] <=> $b->[1]} map {[$_, -s $_]} $_, $o, $op;
    unlink $_ for @f[1, 2];
    rename $f[0], $_;
}
closedir $d;

5.11.2以降でwhile (readdir DIRHANDLE) { ... }なんて書けるようになってたのね。ちょっと便利かもしれない。