5

/ usr / localのマシンに現在ある古いPerlに加えて、ホームディレクトリにPerl5.10をセットアップしたいと思います。私はこのマシンのスーパーユーザーではありません。

require 5.10 HPUX perlバイナリパッケージを見つけました。これは機能しているようですが、何らかの理由で/ usr / localで実行されていると想定しているようです(@INCエラーメッセージで証明されています)。PERLLIBに加えて、PERLHOMEや、Perlが/ usr / local dirsで何も検索しないように設定する必要があるものなど、他の変数はありますか?

PS ./Configureステップでdirをコンパイルして設定するためのアドバイスをオンラインで見ましたが、この古いボックスでコンパイルするのに苦労していたので、コンパイル済みのPerlを使用することをお勧めします。


更新-レオンはこれに答えたので、それを念頭に置いてコンパイルされない限り、基本的にあなたのホームディレクトリからperlバイナリを正しく実行することはできません

4

3 に答える 3

5

あなたはこの答えを気に入らないでしょう。

Perl は @INC を文字列としてバイナリに格納します。Perl を再配置する手法が登場する前はuserelocatableinc、バイナリを検索して置換し、Config.pm でそれらを変更する必要がありました。これが、ActiveState が再配置可能な Perl を出荷した方法です。

文字列は以前と同じサイズのままにする必要があり、余分なスペースを null バイトで埋めます。ActiveState は、"/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" などのプレフィックスを使用して Perl を構成することで、これを回避します。また、バイナリでの検索が非常に明確になりました。そのような運がないため、現在のパスが置き換えたいパスよりも短い場合にのみ機能します。

しかし、それはあまりにも複雑です。HP/UX のソースを使用して自分で Perl をコンパイルするか、perl.org から通常のソースを入手してください。Perl には専任の HP/UX 開発者がいるので、すべてスムーズに進むはずです。

于 2009-02-26T23:30:40.583 に答える
4

perlバイナリが再配置可能かどうかによって異なります。これはコンパイル時のオプションです。このコマンドの出力は何ですか?定義されているかどうか?

perl -V:userelocatableinc
于 2009-02-26T00:28:40.017 に答える
-1

最初の行で、任意のインタープリター パスを指定できます。

!#/my/local/perl 

また、マシン間の移植性を求めていない場合は、スクリプトで @INC を手動で設定できます。環境から取得する方法もあると思います。これは、より移植性が高い可能性があります。

于 2009-02-26T01:07:57.770 に答える