Я пытаюсь пройти по каталогам, чтобы изменить определенные расширения файлов в этих каталогах.
Я добрался до того места, где я могу пройти через каталог, заданный через командную строку, но я не могу заставить его проходить через подкаталоги этих каталогов.
Например: если я хочу изменить расширения файлов в каталоге Test, тогда, если у Test есть подкаталог, я хочу иметь возможность пройти через этот каталог и также изменить расширения файлов этих файлов.
Я это придумал. Это работает для одного каталога. Он правильно изменяет расширения файлов в одном конкретном каталоге.
#!/usr/local/bin/perl
use strict;
use warnings;
my @argv;
my $dir = $ARGV[0];
my @files = glob "${dir}/*pl";
foreach (@files) {
next if -d;
(my $txt = $_) =~ s/pl$/txt/;
rename($_, $txt);
}
Затем я услышал о File :: Find :: Rule, поэтому попытался использовать его для перемещения по каталогам.
Я придумал это:
#!/usr/local/bin/perl
use strict;
use warnings;
use File::Find;
use File::Find::Rule;
my @argv;
my $dir = $ARGV[0];
my @subdirs = File::find::Rule->directory->in( $dir );
sub fileRecurs{
my @files = glob "${dir}/*pl";
foreach (@files) {
next if -d;
(my $txt = $_) =~ s/pl$/txt/;
rename($_, $txt);
}
}
Это не работает / не будет работать, потому что я недостаточно знаком с File :: Find :: Rule
Есть ли лучший способ пройти по каталогам, чтобы изменить расширения файлов?
File::Find
. Вот руководство - person David   schedule 19.11.2014