我在 perlmonks 上问了这个问题,并且进展有限,所以我会在这里问。我使用 perlbrew 在 Mac OS X 10.7.5 上安装了 perl 5.16.0,线程化。现在,当我尝试将模块转移到新安装时,它会失败并显示一条我不理解的消息。以下是我使用和输出的命令。
$ perlbrew install --as perl-5.16.0t -Dusethreads perl-5.16.0
然后,按照关于 perlmonks 的帖子:
$ perldoc -t perllocal | perl -lane'/"Module"/ && print $F[-1]' | sort -u >/tmp/pms
$ perlbrew switch perl-5.16.0t
$ cpanm -v </tmp/pms &>>/tmp/inst.log & tail -f /tmp/inst.log
然后我尝试了这些命令作为一个简单的检查,并得到了我无法理解的输出:
$ perl -e 1 -MFile::Find
dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
Expected in: flat namespace
dyld: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
Expected in: flat namespace
Trace/BPT trap: 5
$ perldoc File::Find
dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
Expected in: flat namespace
dyld: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
Expected in: flat namespace
Trace/BPT trap: 5
我卸载了 perl-5.16.0t 并删除了文件夹 perlbrew 和 .bash_profile 中的行,所以现在我回到了系统 perl 5.12.3。不过,我想知道如何做到这一点,在我的主目录中有多个 perls,而不必使用 ActiveState。