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 に答える