Как отфильтровать имена файлов с помощью регулярных выражений вместо выражений глобуса? - PullRequest
0 голосов
/ 10 ноября 2011

Я фильтрую файлы каталога:

chdir '/home/brian/mypics/';
@picArray   = <*.JPG *.GIF *.jpg *.gif *.PNG *.png *.jpeg>;
@soundArray = <*.mid *.MID *.wav *.WAV *.mp3 *.MP3 *.wma *.WMA *.ogg *.OGG>;

Я знаю, что должен быть лучший и более простой способ, который учитывает регистр и может учитывать регулярные выражения, такие как gif|png|jpe?g и wma|ogg|mp3|wave?|midi?.

Как я могу иметь массив для перехвата всех неизвестных типов файлов (например, если один был .exe, он был бы в массиве полностью своего собственного, так как два других никогда его не перехватили)?

1 Ответ

2 голосов
/ 10 ноября 2011

opendir / readdir будет работать:

opendir(my $dh, "/tmp/");
my @files = readdir($dh);
my @picArray = grep { /\.(gif|png|jpe?g)$/i } @files;
my @soundArray = grep { /\.(wma|ogg|mp3|wave?|midi?)$/i } @files;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...