我可以在Perl中使用Split()对数组吗?我正在寻找一个正则表达式上的数组元素



我正试图在我的本地机器上获得图像文件的名称,并且它不应该重复。我已经在一个数组中得到了所有的文件名,当我试图进入数组并使用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";} 
}

您正在循环@ fileffound,但在当前迭代中不使用该元素。并且你正在传递File::Find 'images/p',所以你找到的名字不会以'/images/p/'开头。

试题:

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

还有,你说的是_;这似乎与你的代码所做的完全不同。

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

相关内容

最新更新