1

我正在尝试获取本地计算机上图像文件的名称,并且不应该重复。我已经在一个数组中获得了所有文件名,当我尝试进入数组并使用 Split() 时,我得到一些 888 作为输出。我正在寻找一个正则表达式,我可以在遇到“_”(下划线)之前打印所有内容。我需要获取名称,然后我可以使用 Uniq 删除重复项。欢迎任何建议。

我有以下代码:

#!/usr/bin/perl

use strict;
use warnings;
use File::Find;
use Data::Dumper;
use List::MoreUtils qw/ uniq /;

my $localdir = 'images/p/';
my @filefound;

find(
  sub {push @filefound, $File::Find::name if /.jpg$/ },
  $localdir
);

foreach (@filefound){
  my @result = split('/images/p/',@filefound);
  foreach (@result) { print "$_  \n";} 
}
4

1 回答 1

4

您正在循环 @filefound 但不使用当前迭代的元素。而且您正在传递 File::Find 'images/p',因此您找到的名称不会以 '/images/p/' 开头。

尝试:

my @result = split('images/p/', $_);

此外,您在 _ 之前对所有内容都说了些什么;这似乎与您的代码所做的完全不同。

如果您只需要完整路径的一部分,请考虑使用File::Basename 。

于 2011-07-18T17:15:23.467 回答