【发布时间】:2015-05-14 00:04:53
【问题描述】:
我有一个非常大的文件,想要提取平衡几何的所有原子符号和坐标。所需信息显示如下:
***** EQUILIBRIUM GEOMETRY LOCATED *****
COORDINATES OF ALL ATOMS ARE (ANGS)
ATOM CHARGE X Y Z
-----------------------------------------------------------
C 6.0 0.8438492825 -2.0554543742 0.8601734285
C 6.0 1.7887997955 -1.2651150894 0.4121141006
N 7.0 1.3006136046 0.0934593194 0.2602148346
注意:坐标完成后有一个空行。
到目前为止,我已经将一个对我有意义的代码拼凑在一起,但是它会产生错误,我不知道为什么。 它在调用脚本后需要一个文件,保存每一行并在看到包含触发符号和坐标记录的 EQUILIBRIUM GEOMETRY 的字符串时更改为 $start==1。它继续保存包含坐标格式的行,直到它看到一个空白行,它完成了记录到 $geom 中。
#!/usr/bin/perl
$num_args = $#ARGV + 1;
if ($num_args != 1) {
print "\nMust supply GAMESS .log file.\n";
exit;
}
$file = $ARGV[0];
open FILE, "<", $file;
$start = 0;
$geom="";
while (<FILE>) {
$line = $_;
if ( $line eq "\n" && ($start == 1) ) {
$start = 0; }
if ( $start == 1 && $line =~ m/\s+[A-Z]+\s+[0-9\.]+\s+[0-9\.\-]+\s+[0-9\.\-]+\s+[0-9\.\-]+/ ) {
$line =~ s/^\s+//;
@coordinates = split(/\s+/,$line);
$geom=$coordinates[0],$coordinates[3],$coordinates[4],$coordinates[5];
}
if ( $line =~ m/\s+\*+ EQUILIBRIUM GEOMETRY LOCATED\s\*+\s+) {
$geom = "";
$start = 1;
}
}
print $geom;
错误信息:
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./perl-grep line 5.
【问题讨论】:
-
如果包含错误,这个问题会更容易理解
-
我看不出你为什么不在这里
use strict和use warnings。如果您这样做,并收到任何错误消息/警告,请将它们包括在内。也许有人可以提供帮助。您的错误很可能出现在if的第一个分支$geom =。 -
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./perl-grep line 5.