そして今、反対意見のために。@transistor1がコメントで言ったようにTMTWOTDI 。また、Perlのwhipituptitudeの力を呼び出すこともできます。cp
モジュールよりmv
も慣れ親しんでFile::Copy
いて、移植性について心配しておらず、プログラムが1つか2つの余分なプロセスを開始することでパフォーマンスが低下する余裕がある場合(ヒント:おそらく可能です)、Perlを使用すると簡単にこれらのツールをプログラムに統合すれば、可能な限り迅速にタスクを実行するために利用可能なツールを使用しても問題はありません。
そして、Perlでジョブを実行する方法を知っている場合でも、Unixユーティリティがジョブに適したツールである1回限りのタスクが存在する場合があります。
# I need log.err plus the next two oldest and the next two newest
# files in the current directory. Should I say
chomp(@f = qx[ls -t | grep -C2 log.err]);
# or
@e = sort { -M $a <=> -M $b } glob("*");
($i) = grep { $e[$_] eq 'log.err' } 0..$#e;
@f = @e[$i-2 .. $i+2];
# or
use Acme::OlderNewer::FileFinder;
@f = find_oldernewer_files(".", "log.err", -2, +2);
# ? Or suppose I want a list of all the *.pm files under all
# directories in @INC, and we lucked out so that nothing in @INC
# has any spaces or special characters.
# Is my script any less useful for saying
chomp(@f = `find @INC -name \\*.pm`);
# than
use File::Find;
find( sub { /\.pm$/ && push @f, $File::Find::name }, @INC );