Я хочу извлечь значения из каталогов структуры музыки, используя File :: Find :: Rule, и у меня возникают трудности с получением общего количества дисков каждого альбома, если оно есть, например, если альбом содержит 3 подкаталога DISC1, DISC2, DISC3 - общее количество дисков должно быть 3. Если я выполняю grep для этих каталогов перед оператором «For», он получает сумму всех найденных, а если я пытаюсь выполнить в операторе «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";
}
}