64 位升级后 Perl 脚本出现段错误

64 位升级后 Perl 脚本出现段错误

我最近通过重新安装并将数据复制到位将 32 位 Debian 服务器升级到 64 位。

在此之后,我有一个 perl 脚本,它重复了下面的操作,并且在告诉线:

seek(FIN,$ps,0);
tell(FIN, $ps);
$line=<FIN>;

我不说话perl,所以我不确定这里到底发生了什么。我可以通过注释每次出现的 tell 来让脚本运行(显然成功了),但这显然不是最好的解决方案。

我怀疑告诉正在调用 32 位二进制文​​件或类似的东西,这是导致段错误的原因 - 但我不知道。

有人可以解释 tell 的作用如果它确实是一个单独的二进制文件,它属于哪个包(或者它是如何安装的,即 cpan)?

也许我走错了路?

答案1

根据 Perl 文档http://perldoc.perl.org/functions/tell.htmltell只有一个参数并返回当前位置。您的代码有两个参数。请尝试以下方法:

$ps = tell(FIN);

tell如果返回 -1(表示出现错误),还应该进行一些错误检查。

答案2

它是一个内置函数但是,段错误对于 perl 脚本来说是一个非常严重的死机方式(这已经绝不发生在我身上),所以我不知道可能是什么原因造成的。

答案3

为了回答您的直接问题,tell 返回文件句柄的当前位置。

相关内容