我正在过滤目录的文件:
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
,它将是一个数组,所有它都是自己的,因为其他两个从未捕获过它)?
答案 0 :(得分:2)
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;