1
File :: Find :: Ruleを使用して音楽構造ディレクトリから値を抽出したいのですが、もし存在すれば各アルバムの合計ディスクを取得するのが難しいです。 DISC1、DISC2、DISC3の3つのサブディレクトリがあります。ディスクの総数は3です。 "For"ステートメントの前にこれらのディレクトリをgrepすると、見つかったものの合計が得られます。 "For"ステートメント内で試してみると、時間。存在する場合、各アルバムの合計ディスクを抽出する方法。ありがとう。概要においてディレクトリを数えて最大の数値を得る方法
use autodie;
use strict;
use warnings;
use File::Find::Rule;
use File::Spec;
my $dir = 'D:\Test';
$dir =~ s#\\#/#g;
my @fd = File::Find::Rule->directory()
->name(qr/\(\d+\)/)
->in($dir);
my $grep_totaldiscs = grep /DISC\d+/, @fd;
print "$grep_totaldiscs\n";
for my $fd (@fd) {
my ($genre, $artist, $album, $disc) = (File::Spec->splitdir($fd))[2..5];
my ($discnumber, $totaldiscs);
if ($fd =~ /DISC(\d+)/) {
$discnumber = $1;
$totaldiscs = $1 if (defined($totaldiscs) < $1);
print "$album $totaldiscs\n";
}
}
マーティン、ご協力に感謝。私はあなたの提案をテストし、ディスク番号を含むが値1の見つかったディレクトリをすべて表示します。何かを修正する必要があるかどうかを確認するためにハッシュキーには不向きですが、テストを続行します。 – thebourneid
問題の一部であったかもしれない、私は「間違った」方法で回したと思う。今修正されました。 –
今は完璧です。もう一度ありがとう。 – thebourneid