問題タブ [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 投票する
1 に答える
245 参照

perl - Perlモジュールの内外でエラーをどのように処理する必要がありますか?

私はperltootを使ってperlでモジュールを作る方法を学び始めました:

  • 可能であれば、サンプルコードを使用して、モジュール内外のエラーを脅かす方法を知りたいですか?

例えば:

また

  • モジュール内でエラー、問題、引数の欠落があったものを他に呼び出す場合、エラーがあったことを示す正しい方法はどのようになっていますか?

PS:私の質問があまりにもオフではないことを願っていますそして皆さんこんにちは:)

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

perl - Perl アプリケーションのインストール

いくつかのサーバーに展開するための小さな perl アプリケーションを作成しました。これは、いくつかのスクリプト、いくつかのモジュール、およびいくつかのデータ ファイルで構成されています。複数のユーザーが使用します。アプリ モジュールを site_perl ディレクトリに移動するのではなく、これらすべてのファイルを 1 つのディレクトリにまとめたいと思います。

たとえば、アプリケーションが jump.pl swim.pl Common.pm と messages.txt で構成されているとします。

アプリケーション (jump.pl または swim.pl のいずれか) は、別のディレクトリから呼び出されます。アプリケーションのインストール場所が $PATH にない可能性があるため、ユーザー (または別のアプリ) がのような絶対パス名/some/path/swim.plまたは のような相対パス名でアプリケーションを呼び出す可能性があります。../path/swim.pl

アプリケーションをできるだけシンプルに再配置したいのですが、これは、アプリケーションへのパスをできるだけ少ない場所に配置することを意味します。

現時点で swim.pl と jump.pl はこのように開始します

そのため/some/path、いくつかのスクリプトとモジュールのいくつかの場所にあります。

保管する場所の数を最小限に抑えるための可能な手段として、次のことを検討しました/some/path

  • 環境変数PERL5LIB=/some/pathを設定して行う open my $fh, '<', "$ENV{PERL5LIB}/messages.txt"
  • シバン行を#!/usr/bin/perl -I/some/path- に設定しますが、messages.txt を見つけるにはどうすればよいでしょうか?
  • for in ?use Cwd qw(abs_path); の使い方を見つけてみてください。basename abs_path($0)use libBEGIN

設置場所の柔軟性を最大化し、すべてをまとめ、設置場所の複数のハードコーディングを最小限に抑えるための提案はありますか?

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

perl - Perl 変数のデフォルト値を設定するにはどうすればよいですか?

私はPerlにまったく慣れていません。外部モジュール HTTP::BrowserDetect を使用する必要がありました。いくつかのコードをテストしていて、os_string メソッドから OS の名前を取得しようとしました。そのため、単純にオブジェクトを初期化し、返された値を格納する変数を作成しました。

一部のユーザー エージェントはブラウザ ユーザー エージェントではないため、os_string から値を取得できません。エラーが発生しますUse of uninitialized value $os_name in concatenation (.) or string

メソッド os_string が undef を返すために $os_name が初期化されていない場合、どのように処理すればよいでしょうか (これは、モジュールのソース コードを読むことで起こると思います)。これらの場合、たとえば No OS など、デフォルトの文字列を指定する方法が必要だと思います。

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

perl - Perl の Net::SFTP->new が「ARRAY 参照ではありません」と文句を言うのはなぜですか?

Net::SFTP を使用してリモート サーバーに接続しようとしています。

私のスクリプトは次のとおりです。

しかし、これを実行すると、次のようなエラーが表示されます。

誰でもこれで私を助けることができますか?

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

linux - postgresがインストールされていない場合、どうすればDBD :: Pgをインストールできますか?

postgresとNagiosで実行されている別々のサーバーがあります。nagiosで「 psql_replication_check.pl」を使用して、postgresレプリケーションステータスを監視したいと思います。このチェックスクリプトでは、データベースに接続するためにDBD::Pgモジュールが必要です。pg_configファイルのパスを要求するDBD::Pgのインストール。

Nagiosマシンにpostgresをインストールする権限がありません。以前にこの問題を修正したことがある人はいますか?

両方のシステムにCentOS5.4があります。

0 投票する
2 に答える
208 参照

perl - いつ「use」を使用する必要がありますか?

私が覚えている限り、モジュールを使用するときはいつでも use、コードの先頭に行を含めます。

最近、相互に使用する 2 つの Moose オブジェクト モジュールを作成していました。この単純すぎる例を見てください。

1 つのモジュール:

別のモジュール: パッケージ M2 0.001;

そして、それらを使用する短い例:

ここで、2 つのモジュールが相互に使用されていることに注意してください。M1のインスタンスを作成し、M2それを使用して を生成しますがvery_cool_nameM2は のインスタンスをM1属性として持ちます。

さて、日食でコメントを外すuse M2;M1、狂ってしまいます。それは、この「循環利用」が生み出すループだからではないでしょうか。

私はこれにコメントしuse、すべてが正常に動作しているように見えます (私は思う...) が、私は本当に不安になります (私はuseそのクラスを -ing せずにオブジェクトを使用しています!それは「合法」ですか?..)。これも私を驚かせました:

  • 本当にいつ使用する必要がありますuseか? モノを使うときは必ず使うように教わったと思います。

  • 2 つのモジュールが相互に使用する場合、何か根本的に問題がありますか (それぞれが他のモジュールのオブジェクトを使用するという意味で)。これが論理的に不可能な場合があることは知っていますが、この場合のように、理にかなっている場合もあります。 )。

0 投票する
2 に答える
8695 参照

perl - 「名前 ... は一度しか使用されていません: ... でタイプミスの可能性があります」を取り除く方法は?

警告が表示されます:

まあ、この特定の警告を抑制することができることはわかっていますが、それはちょっと醜いです. 私は何か間違ったことをしていますか?私は警告されることに慣れていません:)

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

perl - Perlで数値を英語の形式に変換するにはどうすればよいですか?

入力例222として数値を受け取るPerlスクリプトが必要であり、222として出力されるはずです

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

perl - OOP Perl でサブルーチンを呼び出す

引き継いだコードを調べていると、次の行に出くわしました。

これが というパッケージから配列を返すことはわかっていますMy::Module::DB::raw_info

私が確信していないのは(そして私はOOPを学んでいるだけです)、何->search_likeを指すかです。

私はそれを変数またはサブルーチンとして見ませんでしたMy::Module::DB::raw_info

ヒントをいただければ幸いです。私はこのことを学び始めたばかりです。火を浴びているようなものです。(後でもっと幸せになることはわかっていますが) うん!

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

perl - ポータブル Perl のコンパイルと CPAN モジュールの組み込み

CPAN モジュール、具体的には YAML モジュールを含むポータブル バージョンの perl をコンパイルしようとしています。このポータブル バージョンを多数の Redhat Linux マシンのホーム ディレクトリにコピーし、$PATH に追加して、デフォルトの perl バージョンの代わりにこのバージョンを使用していくつかのテストを実行できるようにする予定です。

私は既に perl のポータブル バージョンをコンパイルして、別のマシンで動作させることができました。ただし、YAML モジュールをコンパイルしてインストールすると、ローカルでは動作しますが、他のマシンにコピーすると失敗します。

YAMLモジュールのローカルでのコンパイル手順は次のとおりです

YAML モジュールをローカルにインストールし、スクリプトで YAML モジュールを使用するとローカルでも動作します。

perl を別のマシンにコピーして YAML モジュールを使用しようとすると、これがエラーになります...

lib/site_perl/5.10.1/x86_64-linux/YAML/LibYAML.pm がローカル コピーに存在するにもかかわらず。

私がやろうとしていることは可能ですか?
もしそうなら、どこが間違っていますか?