約 5000 個の画像を含むフォルダーがあり、次のコードを使用する場合:
my $path= "./foo/images"
my @files = File::Find::Rule->file()->name('*.jpg')->in($path);
配列に 5000 個の画像を取得する必要があります。
tail
しかし、たとえば最後の 100 枚の画像を取得するために、perl やandのようなシェル関数head
、またはその他の方法に相当するものはありますか?
配列スライスを使用できます。これにより、最初の 5 が返されます。
my @files = (File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];
これは最後の 5 つを取得します。
my @files = (reverse File::Find::Rule->file()->name('*.txt')->in($path))[0 .. 4];
今気づきました... File::Find::Rule は画像を完全に混同します...そのため、配列をスライスする前にさらに並べ替えが必要です
最後に、私/私たちは以下を使用する必要があります:
最初の 5 つの場合:
my @files = (sort File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];
最後の 5 つの場合:
my @files = (reverse sort File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];