問題タブ [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.
perl - Perlで参照渡しするより良い方法はありますか?
私は次のように参照渡しを行っています:
それを行うよりクリーンな方法はありますか?
関数参照を使用しているため、プロトタイプは機能しません (関数参照を使用するのには十分な理由があると信じてください)。
また、醜いので、$_[0]
どこでも使用したくありません。repl
perl - ベータ版Perlスクリプトからベータ版Perlモジュールを使用するにはどうすればよいですか?
私のPerlコードに本番コードの場所と「ベータ」コードの場所がある場合(たとえば、本番Perlコードは/usr/code/scripts
、ベータPerlコードはあり/usr/code/beta/scripts
、本番Perlライブラリはあり/usr/code/lib/perl
、それらのライブラリのベータ版/usr/code/beta/lib/perl
はあります)、簡単な方法はありますか?そのような設定を達成するには?
正確な要件は次のとおりです。
コードは、本番環境とベータ版の場所で同じである必要があります。
明確にするために、コード(ライブラリまたはスクリプト)をベータ版から本番環境に昇格させるために必要なのは、文字通り
cp
ベータ版から製品の場所にコマンドを発行することだけです。ファイル名とファイルの内容の両方が同一である必要があります。スクリプトのベータ版は、他のベータスクリプトとベータライブラリ(存在する場合)または本番ライブラリ(ベータライブラリが存在しない場合)を呼び出す必要があります
/usr/code/
コードパスは、ベースディレクトリ( vs/usr/code/beta/
)を除いて、ベータ版と本番環境で同じである必要があります。スクリプトはすべて同じベースディレクトリの下にある必要がありますが、任意の深さレベルのサブディレクトリにある可能性があります(これにより、セクション31.13
use lib "$FindBin::Bin/../lib"
の従来のソリューションが除外されます。 「ProgrammingPerl」のlibを使用してください)
この質問への回答として、どのように問題を解決したかを紹介しますが、もっと良い方法があるかどうか知りたいです。
perl - 実稼働 Web サーバーの Apache/mod_perl で Web Perl モジュールのベータ テストを行うにはどうすればよいですか?
完全な本番環境に昇格する前に、ほとんどのコードがベータ モードで展開されるセットアップがあります。つまり、完全な本番環境で実行されます (本番データベース - 通常は本番データと本番 Web サーバーを使用)。その段階をベータテストと呼んでいます。
主な要件の 1 つは、BETA コードの製品版への昇格は、ベータ版から製品版のディレクトリへの単純な「cp」コマンドである必要があることです。コードやファイル名は変更されません。
Web 以外の Perl コードの場合、シームレスなベータ テストを達成することはかなり可能です (詳細はこちらを参照してください)。
- Perl プログラムは本番ルート (
/usr/code/scripts
) の下の標準的な場所にあり、本番 Perl モジュールは同じルート (/usr/code/lib/perl
)の下にあります。 - ベータ コードには、ベータ ルートの下を除いて 100% 同じコード パスがあります (
/usr/code/beta/
) - 特別なモジュールは、スクリプトがまたは
@INC
から呼び出されたかどうかに基づいてスクリプトを操作し、ベータ スクリプト用のベータ ライブラリを含めます。/usr/code/scripts
/usr/code/test/scripts
このセットアップは、Web Perl コードのベータ テストが必要になるまで問題なく機能します (セットアップは EmbPerl と Apache/mod_perl です)。
ハングアップは次のとおりです:実稼働 Perl モジュールと BETA Perl モジュールの両方が同じ名前 (たとえば/usr/code/lib/perl/MyLib1.pm
と/usr/code/beta/lib/perl/MyLib1.pm
) を持っている場合、mod_perl はこれらのモジュールの 1 つしかメモリにロードできません。同時実行の問題により、特定の Web ページが現在ロードされているモジュールのバージョンに影響を与える。
政治的/組織的な理由で実行できない明らかな非プログラミングの解決策 (血まみれの BETA Web サーバーを取得する) は別として、Perl または mod_perl でこの問題を回避する方法はありますか?
リストされているPerl モジュールをアンロードするためのさまざまな方法を試してみまし%INC
たが、別のユーザーがちょうどいいタイミングで (またはむしろ間違った) ベータ ページをロードし、本番ページに使用されるベータ モジュールがロードされる可能性があるという問題が残っています。 .
perl - Perl プログラムは、使用する Perl モジュールを含むファイルの場所をどのようにして知ることができますか?
私の Perl プログラムが Perl モジュールを使用している場合、モジュール コードを含むファイルの場所をどのように判断しますか?
たとえば、プログラムに次のものが含まれているとします。
どこに見えますか?
perl - Perlの@INCはどのように構築されますか?(別名、Perlモジュールが検索される場所に影響を与えるすべての方法は何ですか?)
Perlモジュールが検索される場所に影響を与えるすべての方法は何ですか?または、Perlの@INCはどのように構築されますか?
ご存知のように、Perlは@INC
ディレクトリ名を含む配列を使用してPerlモジュールファイルを検索する場所を決定します。
StackOverflowには包括的な「@INC」FAQタイプの投稿がないようですので、この質問は1つとして意図されています。
perl - Perl Web開発用のASPスタイルのタグ?
これを聞いて10年前に旅行しているような気がしますが...
ASPスタイルのタグを使用してWeb指向のPerlスクリプトを記述できるようにするためのモジュール、パッチ、またはPerlの「新しい」バージョン(過去10年間にリリースされたもの)はありますか?
例:ASP/JSPから
例:PHPから
私がこれを尋ねている「理由」について心配しないでください...それはプログラミング言語の研究に関連しています。
perl - ユーザーとのSMTP接続およびSSL認証にperlを使用し、添付ファイル付きの電子メールを送信する方法
接続にユーザー+SSL認証を必要とするSMTPメールサーバーを使用しています。メールサーバーに接続してメールを送信するためのperlモジュールを探していますが、何も役に立ちません。
perlモジュールまたはperlコードに関する提案をいただければ幸いです。
編集
Mail::SendmailとNet::SMTP :: SSLを使用してsendmailサーバーに接続し、メールを送信しようとしました。以下はサンプルコードですが、エラーユーザーが不明になっています。
エラー:
コード:
bash - Perl の可用性、そのバージョン、および必要なモジュールの存在を確認する方法は?
私は Perl スクリプトを作成しました。すべての人に配布したいので、ユーザーの環境をテストし、その環境が Perl スクリプトを実行できるかどうかを調べるために使用される bash スクリプトを作成する予定でした。
次のようなことをテストしたい:
- Perl がそのシステムにインストールされているかどうか
- Perl にはバージョン 5 以上が必要です
- モジュール JSON::Any が利用可能かどうか
どんな提案でも大歓迎です:-)
perl - CPAN がバンドル内のモジュールの依存関係をインストールしないのはなぜですか?
アプリを簡単にインストールできるようにバンドルを作成しています。私はここから始めました: http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Bundles
次のようなパッケージ Bundle::MyApp があります。
ローカル マシンでテストしているので、パッケージを cpan フォルダーに入れます。例: ~/.cpan/Bundle/MyApp.pm
cpan install Bundle::MyApp
リストしたモジュールに必要な依存関係をインストールしないことを除いて、これを使用して実行できます。したがって、この例では、cpan は最初に DateTime をインストールしようとしますが、DateTime::Locale が最初に必要なためインストールが失敗し、次に Image::Size をインストールしようとしますが、dep が必要なために失敗します。
cpan を使用して DateTime モジュールを直接インストールすると、正常にcpan install DateTime
動作し、依存関係がインストールされます。
そのため、バンドルからインストールするときに依存関係に従うように CPAN に指示する方法を探しています。パッケージに入れる必要があるものはありますか? それとも、私のユーザー アカウントの CPAN 構成の問題でしょうか?
perl - 多くのPerlモジュールをどのように編成する必要がありますか?
12個のディレクトリに100個のPerlモジュールがあると考えてください。しかし、メインのPerlスクリプトを見ると、100use p1 ; use p2 ;
などのように見えます。この問題を解決するための最良の方法は何ですか?