所以我遇到了一个我不知道如何解决的问题。我在Windows计算机上使用Cygwin Linux模拟器进行一些用perl编写的分子动力学模拟。我一直在遇到无法读取文件的问题。问题的代码在这里:
if (defined $topfile && -r $topfile) {
$self->_sendCommand("open unit 10 read form name \"$topfile\"");
$self->_sendCommand("read RTF card unit 10");
$self->_sendCommand("close unit 10");
$havertf=1;
}
我使用以下方法对其进行了测试:
print "$topfile\n";
if (-r $topfile) {
print "YES\n";
}
if (defined $topfile) {
print "YES2\n";
}
因此两个YES语句都打印出来,我知道文件是定义和可读的。
我为第一部分的每一行测试了打印报表,我的问题出现在"打开单元10读取表单名称之后。" 这是确切的错误:
CHARMM> open unit 10 read form name /C:/CHARMM_Nichols/CHARMM/test/data/top_all22_prot.inp/
VOPEN> Attempting to open::/c:/charmm_nichols/charmm/test/data/top_all22_prot.inp/::
OPNLGU> Unit 10 cannot be opened as /C:/CHARMM_NICHOLS/CHARMM/TEST/DATA/TOP_ALL22_PROT.INP/
我认为问题归结为反斜杠和转发斜杠,因为我的所有目录都在windows系统(反斜杠)中,但程序正在执行期望Linux系统(正斜杠)。知道如何修复和/或测试这个吗?我可以写一个脚本来改变前向反斜杠吗?它不允许我将环境变量($ topfile)更改为模拟器中的反斜杠。