我最近通过重新安装将32位Debian服务器升级到64位,并将数据复制到位。
在此之后,我有一个perl脚本重复以下,并在tell行中进行segfaulting:
seek(FIN,$ps,0); tell(FIN, $ps); $line=<FIN>;
我不会说Perl ,所以我不确定这里到底发生了什么。 我可以通过评论所有发生的事情来让脚本运行(显然是成功的),但这显然不是最好的解决scheme。
我怀疑告诉调用一个32位的二进制文件,这是段错误的原因 – 但我不知道。
有人可以解释一下 ,如果它确实是一个单独的二进制文件,它是什么包 (或如何安装即cpan)?
或者我可能在错误的轨道上?
根据http://perldoc.perl.org/functions/tell.html中的Perl文档, tell只有一个参数并返回当前位置。 你的代码有两个参数。 试试这个:
$ps = tell(FIN);
如果tell返回-1,则表示出现错误。
这是一个内置的函数 ,但是段错误是perl脚本死亡的一个非常严酷的方式(这从来没有发生过),所以我不知道可能是什么原因。
为了回答你的直接问题,告诉返回一个文件句柄的当前位置。