除了目前在/ usr / local机器上的古老Perl之外,我想在我的主目录中设置Perl 5.10。我不是这台机器上的超级用户。
我找到了require 5.10 HPUX perl二进制包,它似乎有效,但由于某种原因,它似乎假设它在/ usr / local中运行(由@INC错误消息证明)。除PERLLIB之外是否还有其他变量,比如PERLHOME或我需要设置的东西,以便Perl不会在/ usr / local dirs中查找任何内容?
P.S。我看到advice online在./Configure步骤中编译和设置dir,但是我很难在这个旧盒子上编译东西,所以我更喜欢使用预编译的Perl,因为它似乎主要用于工作。
UPDATE - Leon回答了这个问题,所以基本上不可能从你的家庭目录中正确运行perl二进制文件,除非它是用这个编译的。
答案 0 :(得分:5)
你不会喜欢这个答案。
Perl将@INC存储为二进制文件中的字符串。在有userelocatableinc
之前,重新定位Perl的技术是在二进制文件上进行搜索和替换,以及在Config.pm中更改它们。这就是ActiveState发布可重定位Perl的方式。
字符串必须保持与之前相同的大小,用空字节填充任何额外的空格。 ActiveState可以通过使用类似“/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”等的前缀配置Perl来解决这个问题。它也使得在二进制文件中找到它真的毫不含糊。你没有这样的运气,所以它只有在当前路径比你想要替换它们的路径短的情况下才有效。
但这太复杂了。只需使用HP / UX的源代码自行编译Perl,或者只需从perl.org获取常规源代码即可。 Perl有一个专门的HP / UX开发人员,所以它应该顺利进行。
答案 1 :(得分:4)
这取决于您的perl
二进制文件是否可重定位。这是一个编译时选项。这个命令的输出是什么?是否定义了?
perl -V:userelocatableinc
答案 2 :(得分:-1)
您可以在第一行指向所需的任何解释器路径:
!#/my/local/perl
如果您不是在寻找跨机器的可移植性,可以在脚本中手动设置@INC。我认为有一种方法可以从环境中获取它,这可能更便携。