私は2000の軌道ファイルを与えた分子動力学シミュレーションを実行しました。これらのファイルは、ファイル名の形式がau25-c2-benzalacetone.001
(2000年まで)です。私は一般的なperlプログラムを作成しましたが、2000個のファイルを読み込むわけではありません。すべてのファイルを読み込み、各ファイルごとに個別に必要な座標を抽出するようにコードを変更するにはどうすればよいですか?私は2000のcoordinates_of_interest.dat
ファイルが必要です。ティンカーファイルはau25-c2-benzalacetone
ファイルです。ここで私が書いたコードは次のとおりです。ファイル形式はau25-c2-benzalacetone.001
ある場合これらの変数をperlで正しく指定するにはどうすればよいですか?
#!/usr/bin/env perl
use Math::VectorReal;
use Math::Trig qw/acos/;
use strict;
use warnings;
my $file1 = $ARGV[0];
my $n1 = $ARGV[1];
my $n2 = $ARGV[2];
my $tinker_file = sprintf "%s.%03d"
my($file1, $n1, $n2) = @ARGV;
foreach $tinker_file (glob "$tinker_file.*") {
print "Filename: $tinker_file\n";
}
my $file2 = "coordinates_of_interest.dat";
my %lines_of_interest = map { $_ => 1 } 18, 25, 26;
{
open(FILE2, '>', $file2) or die "couldn't open the file!";
for(my $i=$n1;$i<=$n2;$i++){
{
open(FILE1, '<', $tinker_file) or die "couldn't open the file!";
{
my $num_lines = keys %lines_of_interest;
while (<FILE1>) {
if ($lines_of_interest{$.}) {
print FILE2;
last unless --$num_lines;
}
}
}
}
}
}
〜
〜
〜
あなたは( '$のn1'と' $のn2' '上my')、' $ i'が '' my'は、あなたの 'for'が}'で閉じていないと宣言されていないが、いくつかの構文エラーを修正する必要があり、あなたの最初の 'open'は正しく終了しません(') ')...)。おそらく、あなたのファイルが 'close()'を意味するはずです。 –
真。私はここでこれを編集しようとしています。私はコードを実行し、それは私にFILE1とFILE2の問題を与えている。グローバル・シンボル「の$ tinker_fileは」./extract_coordinates.plライン15で./extract_coordinates.pl線15 構文エラーで明示的なパッケージ名が必要です。 –
は、私は私のコードにこれを追加すると、それは私に次のエラーを与える –