0

ヘルプが必要です:perl 5.8.8のコアモジュールのみを使用してリモートサーバーからファイルをフェッチする方法はありますか?File::Fetchは5.9からのみコアモジュールになりました。

4

3 に答える 3

4

これはしょっちゅう出てきます。はい、古典を見てください。 CPAN を使用することもできます。Perl スクリプトを作成して実行できる場合は、モジュールをローカル ディレクトリに配置して使用することもできます。コア モジュールのみを使用するという要件は、まったく人為的なものです。

あなたの場合、LWP::Simplegetstore()関数はあなたが望むことをします。技術的にはコアでLWP::Simpleはありませんが、デフォルトで多くの Perl ディストリビューションに含まれています。あなたはすでにそれを持っているかもしれません。

更新:では、これを 1000 台のサーバーで実行しますか? 各サーバーにモジュールを手動でインストールする必要はありません。 CPAN をプログラムで使用して、必要なモジュールをダウンロードしてインストールします (CPAN をルート モジュール ライブラリではなくローカルにインストールするには、微調整が必​​要です)。モジュールをファットパックするという Leon Timmermans の提案も別のオプションです。

この方法で本当にやりたくない場合は、基本的に答えはノーです。適切なモジュールもシステム コマンドも使用せずに HTTP 経由でリモート ファイルをフェッチする簡単な方法はありません (私はあなたの独自の HTTP クライアントを単純な方法にする必要がありますが、それが機能する場合は問題ありません)

私が見る唯一の他の潜在的な解決策は、次のような問題に対する別のアプローチです。

  • 1 つの場所でスクリプトを使用してファイルを取得し、FTP 経由で 1000 台のサーバーすべてに配布します。
  • または、ファイルを FTP サーバーに配置し、各サーバーで単純な Perl スクリプトを使用して FTP 経由で取得します。
于 2012-12-10T14:36:52.623 に答える
2

ダンがすでに言ったように、はい、あなたもCPANを使うことができます。彼のリンクで言及されていないアプローチの1つは、通常のCPANを使用するディストリビューションとして記述し、ファットパックすることです。Fatpackerは、スクリプトとそのすべての(pure-perl)依存関係を組み合わせて、配布が簡単な単一のファイルを作成します。

于 2012-12-10T22:19:51.170 に答える
1

あなたが使用することができます:

my $wgetoutput = `wget "$myFileToGet"`;

バッククォート (`) 内のものはデフォルト シェルに与えられるので、そこで必要な (そして許可されている) ものを呼び出すことができます。警告: $myFileToGet には "&& rm -rf *" のようなものが含まれている可能性があるため、サニタイズを忘れないでください。

于 2012-12-10T13:57:15.587 に答える