Perl脚本在64位升级之后进行segfaulting

我最近通过重新安装将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文档&#xFF0C; tell只有一个参数并返回当前位置。 你的代码有两个参数。 试试这个:

 $ps = tell(FIN); 

如果tell返回-1,则表示出现错误。

这是一个内置的函数 ,但是段错误是perl脚本死亡的一个非常严酷的方式(这从来没有发生过),所以我不知道可能是什么原因。

为了回答你的直接问题,告诉返回一个文件句柄的当前位置。