Perlプログラムの特殊エラー

Perlプログラムの特殊エラー

私は特定の種類のファイルをコピーするためにこのPerlプログラムを書いています。このプログラムを実行すると、非常に迷惑で奇妙なエラーが表示されます。

#!/usr/bin/perl -w

use strict;


for (my $LAMBDA=0; $LAMBDA<1.05;$LAMBDA += 0.05) {
    print "Processing configuration $LAMBDA...\n";
    chdir "Lambda_${LAMBDA}/Production_MD";
    system("cp *.tpr   ../../dimer_tprs ");
    chdir "../..";
}

このエラーが表示されます。

Processing configuration 0...

Processing configuration 0.05...

Processing configuration 0.1...

Processing configuration 0.15...

Processing configuration 0.2...

cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.25...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.3...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.35...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.4...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.45...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.5...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.55...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.6...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.65...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.7...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.75...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.8...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.85...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.9...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 0.95...
cp: cannot stat `*.tpr': No such file or directory
Processing configuration 1...
cp: cannot stat `*.tpr': No such file or directory

だから最初に2-3をコピーしてからそのようなファイルやディレクトリがないと言いますが、ファイルとディレクトリはそこにあります。助けてください。

ベストアンサー1

2つの問題があります。最初は浮動小数点数学です。浮動小数点演算には常にバグがありますが、この場合は問題にならないようです。もう1つのことは、sのchdirエラーチェックを実行していないことです。 Lambda_0.2/Production_MDがないように見えるすべてが混乱しているようです。これがより簡単な解決策かもしれません。

find . -maxdepth 3 -mindepth 3 -path "Lambda_*/Production_MD/*.tpr" -print0 |\
grep --null-data -e "Lambda_0\.[0-9]5\?/Production_MD/*.tpr" -e "Lambda_1\.0/Production_MD/*.tpr"|\
xargs -0r cp -t dimer_tprs

おすすめ記事