問題タブ [perl-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
436 参照

regex - 相対 URL から完全な URL を特定する最速の方法は何ですか (ベース URL が与えられた場合)

現在、このモジュールURI::URLを使用して、相対 URL から完全な URL を生成しています。ただし、希望どおりの速度で実行されていません。これを行う別の方法を知っている人はいますか?

0 投票する
11 に答える
2129 参照

perl - モジュールを作成するには、どのフレームワークを使用すればよいですか?

モジュールを記述するのに最適なフレームワークは何ですか? ExtUtils::MakeMaker (h2xs) またはModule::Build ?

0 投票する
7 に答える
14242 参照

windows - モジュールを失わずに Windows で Perl を更新するにはどうすればよいですか?

仕事では、Windows で Perl 5.8.0 を使用しています。

最初に Perl をインストールしたとき、CPAN に移動し、すべてのソースをダウンロードし、(スレッドをサポートするために .MAK ファイル(?) などで) いくつかの変更を行い、 // を実行しましnmakeた。次に、少しずつ、CPAN から個々のモジュールをダウンロードし、nmake ダンスを実行しました。nmake testnmake install

したがって、より新しいバージョンにアップグレードしたいのですが、新しいバージョンは既存のスクリプトを壊してはなりません。特に、私がインストールした一連の「使用」モジュールは、新しいバージョンにインストールする必要があります。

現在のバージョンを更新するための最も信頼できる (そして最も簡単な) 方法は何ですか?

0 投票する
5 に答える
300 参照

perl - utility.pl を utility.pm モジュールに変更する必要がありますか?

私たちの製品には、多くのファイルの先頭に必要な大きなユーティリティ ファイルがありdoます。これをモジュールにしない理由はありますか? たとえば、これを行う代わりに:

私はこれを行うことができませんでしたか?:

0 投票する
9 に答える
28721 参照

perl - Perlモジュールでプライベート関数を作成するにはどうすればよいですか?

私は小さなPerlモジュールに取り組んでおり、何らかの理由で、新しいモジュールを使用していたテストドライバースクリプトが、プライベートだと思っていた関数の1つを呼び出し、成功しました。驚いたので、グーグルを検索し始めましたが、Perlモジュールでプライベート関数を作成する方法に関するドキュメントを実際に見つけることができませんでした...

次のように、「プライベート」関数の閉じ中括弧の後にセミコロンを付けると言われている場所を見ました。

私はそれを試しましたが、私のドライバースクリプトは、私がプライベートにしたい関数にアクセスできました。

短い例になるようなものを作りますが、私が求めているのは次のとおりです。

モジュールTestPrivate.pm:

ドライバー:TestPrivateDriver.pl

ドライバー出力:

そのため、モジュールの最後の閉じ中括弧の後にセミコロンを追加しましたが、出力は同じです。私が実際に見つけた唯一のことは、この行を私のprivate_functionの最初の行として追加することでした。

しかし、それはかなりハッキーなようです。私はPerlモジュールを書いた経験があまりないので、モジュールを間違って設定しているのではないでしょうか?perlモジュールにプライベート関数と変数を含めることは可能ですか?

私が学ぶのを手伝ってくれてありがとう!

0 投票する
1 に答える
253 参照

perl - Perl で純粋な OO を使用する場合、Exporter は必要ですか?

ドキュメント (Exporter および perlmodlib) には次のように書かれています。

原則として、モジュールがオブジェクト指向になろうとしている場合は、何もエクスポートしません。

しかし、perlmodlib には次のようにも書かれています。

標準のバンドルされたモジュールはすべて、Exporter モジュールを使用するため、名前空間の汚染に関して明確に定義された方法で動作することが期待されます。

OO を行って何もエクスポートしない場合、Exporter は本当に必要なのでしょうか? そうでない場合、それは標準モジュールのどれもこの意味で厳密に OO ではないということですか、それともEXPORT_OK、誰かがあなたのモジュールから継承したい場合にそれを行う必要があるため、いくつかのことを意味するのでしょうか? (それは本当ですか?)または、できるようにするためだけにエクスポーターが必要use MyModule; ... = new MyModuleですか?

0 投票する
1 に答える
1230 参照

perl - 再起動せずに mod_perl2 モジュールをデバッグするにはどうすればよいですか?

環境: Apache/2.2.11 (Win32) mod_apreq2-20051231/2.6.2-dev mod_perl/2.0.4-dev Perl/v5.10.0

win32 を使用していることを除いて、このディスカッション リストの投稿に記載されている状況と非常によく似ています。

私はhttpd.confにこれを持っています:

...および mod-perl スクリプト処理のみ。

MyPackage モジュールを使用するスクリプトがあり、動作しています。

モジュールを壊して、スクリプトをリロードします。エラーは役に立つもので、モジュールを壊した行を教えてくれます。

(この時点で再度リロードすると、最初にファイルをロードできなかったため、「Undefined subroutine &ModPerl::ROOT::ModPerl::Registry...」としか表示されません。しかし、いずれにしても、次のようになります。動作は引き続き発生します。)

ブレークを元に戻し、スクリプト ファイルにも触れて、モジュールをリロードし、リロードします。今それは言います:

また、スクリプトとモジュールに触れても、Web サーバーを再起動しない限り、正しくリロードできません。

(モジュールではなく) スクリプト自体を壊すだけでも問題なく動作します。適切なエラーが発生し、それを元に戻すと、リロード時に再び動作するようになります。

これらの各作業の後、テストする前に Web サーバーを再起動しました。

  1. トレースを試みましたが、引き続きエラーが発生するのは ModPerl/RegistryCooker.pm の 204 行目です。これは、スクリプト全体を評価する行です。{}

  2. スクリプトとモジュールで「use warnings FATAL => 'all'」を「use warnings」に変更してみました。違いはありませんでした。

  3. カスタム $SIG{__DIE__} 関数を無効にしようとしました。違いはありませんでした。(もちろん、エラーが発生した場所だけですが、生成されたエラーは同じでした。)

  4. 冒頭のディスカッション リンクによると、MaxRequestsPerChild はずっと 0 であり、ThreadsPerChild 1 を試しましたが、違いはありませんでした。MaxRequestsPerChild を 1 にしてみました。これにより、この質問の奇妙な動作が解決されますが、リクエストごとに Web サーバーが再起動されます。

    ページが最初に表示されたときに実行される大量のコードがあるため、これは良い解決策ではありません。

  5. また、議論によると、私は httpd をサービスとして実行しているので、サービス パラメーター ウィンドウに -X を追加して [開始] をクリックしましたが、3 分後に完全に開始しようとしていました (通常は 3 秒以内に開始します)。メッセージ。タスク マネージャーでプロセスを強制終了し、Web ブラウザーからページにアクセスできないことを確認しました。コマンドラインから httpd -X を開始しました。この質問の上部と同じ動作です。また、httpd -? を実行したときに -X がリストされていないのも奇妙に感じました。もしかしたら、win32 MPM では利用できないのでしょうか?

  6. そのスレッドで、David は次のように述べています。

    この種の問題をトラブルシューティングした私の経験では、アンロードされたパッケージが、リロードされたモジュールのパッケージ スペースに格納された値 (おそらく BEGIN ブロック時に設定された) を削除し、その後の require が復元しなかった可能性が高いことが示されました。

    しかし、これは私のコードには当てはまりません。私が紹介する「スクリプトを壊す」というエラーは、既に存在する行の上に余分な「my $var」行を追加するだけなので、2 番目の行は既に宣言されていると不平を言います。

リロードのたびに Web サーバーを再起動せずに mod_perl2 モジュールで作業する方法はありませんか?

0 投票する
6 に答える
1608 参照

perl - 「サブモジュール」のすべて/一部を Perl スクリプトに含めるにはどうすればよいですか?

私はPerlモジュールを作成する経験がまったくないので、ここから離れていたら申し訳ありません。

いくつかのモジュールを作成しているとしましょう:

それらが何と呼ばれているのかわからないので、a.pm および b.pm モジュールを「サブモジュール」と呼んでいます。これらは bar.pm モジュールに関連しているためです。ただし、多少独立している可能性もあります。

したがって、私の Perl スクリプトの 1 つは foo::bar::a を使用でき、別のスクリプトは foo::bar::b を使用でき、「a」と「b」の両方の関数を使用する必要がある別のスクリプトがあるかもしれません。これを言う代わりに:

私はこのようなことをしたい:

私の考えでは、これにより、私のスクリプトは bar.pm、a.pm、および b.pm のすべてにアクセスできるようになります。

私はこのようなことをテストしましたが、明らかに間違っていました。

このようなことは可能ですか?bar.pm に a.pm と b.pm を使用させ、呼び出しを「サブモジュール」に渡す「ラッパー」関数を持たせることができると思いますが、もっと簡単な方法があるようです。

0 投票する
3 に答える
9699 参照

perl - Perl モジュールが持っているすべてのサブルーチンを見つける最善の方法は何ですか?

perlモジュールが持っているすべてのサブルーチンをプログラムで発見する最良の方法は何ですか? これは、モジュール、クラス (@EXPORT なし)、またはその中間である可能性があります。

編集: 以下の方法はすべて動作するように見えます。私はおそらく Class::Sniff または Class::Inspector を本番環境で使用します。ただし、レオンの回答は、使用する必要があるにもかかわらず、提示された質問に回答するため、「承認済み」とマークされていますno strict 'refs'。:-) Class::Sniff は、進行するにつれて良い選択になるかもしれません。いろいろ考えたようです。

0 投票する
10 に答える
187657 参照

perl - Perl モジュールがシステムにインストールされているかどうかをコマンド ラインから確認するにはどうすればよいですか?

XML::Simple がシステムにインストールされているかどうかを確認しようとしました。

上記のワンライナーは、システムにインストールされているすべてのモジュールを一覧表示するために使用されました。ただし、XML モジュールはリストされていません。

ただし、以下は正常に実行されます。

問題は何ですか?