0

我们的系统管理员最近升级了我的操作系统和 perl(到 5.12.3)。当我加载 local::lib 环境变量时,它似乎破坏了任何依赖 xs 的东西:

demianshell~> perl -e 'use Storable; store({a=>1}, 'test')'
demianshell~> eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)
demianshell~> perl -e 'use Storable; store({a=>1}, 'test')'
Assertion ((svtype)((_svi)->sv_flags & 0xff)) >= SVt_RV failed: file "Storable.xs", line 3753 at blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/_store.al) line 263, at -e line 1

有一个简单的解决方法吗?

4

1 回答 1

6

如果您说您唯一的 Perl 已从 Perl 5.12.* 以外的版本升级,而您local::lib安装的二进制组件尚未升级,那么抱歉,没有简单的解决方案,除了将local::lib模块重建为新的珀尔。Perl XS 组件在主要的 Perl 修订版中是不可行的。

这就是为什么不信任任何 Perl 系统通常是个好主意的原因,因为它超出了您的控制范围。使用您自己的 Perl 安装总是一个好计划,这样您就可以控制它,无论是在App::perlbrew某个地方安装还是单独安装 Perl。

于 2011-07-08T16:24:01.363 回答