1

これは、私がフォーラムに書いた最初の時間の 1 つです。通常、探しているものを見つけるには、読むだけで十分です。

私は Perl に関して十分な基盤を持っており、それを使って侵入テストを行いたいと考えています。私の問題は、私が見つけたすべてのチュートリアルや本が、オブジェクト指向である LWP で動作することです。オブジェクト指向プログラミングは、率直に言って嫌いです (関数型プログラミングほど意味がありません)。OOP なしで動作する「Web プログラミング」を行う CPAN モジュールがある場合、Google は非常に恥ずかしがり屋で教えてくれます。

大変な作業に違いありませんが、OOP ではなく関数型のプログラミング スタイルで LWP に似たモジュールを作成したいと考えています。

私の主な質問は、どこから始めればよいかということです。LWP や一部の非コア Perl モジュールを使用しない Perl を使用したソケット プログラミングはほとんど見つかりませんでした。CPAN の使用が減れば減るほど、私は幸せになります。

車輪の再発明に少し似ていることは理解していますが、主に楽しみのためにやりたいと思っており、学ぶための最良の方法である場合もあります.

4

2 に答える 2

2

socketbindlistenおよびacceptは、サーバー側の機能を実装するために探している最も基本的な機能です。socketそしてconnectクライアント側のものです。

ソケット: クライアント/サーバー通信のセクションでperldoc perlipc、さらに詳しいアドバイスを提供する必要があります。そこに記載されている関数は、対応するシステム コールに直接マップされます。あなたが見つけることを望むことができなかったよりも、より低レベルの(そしてより苦痛な).

私自身、非常に複雑で肥大化した OOP アプローチを熱烈に嫌っているので、Perl で OOP がどのように行われるかを検討するようにアドバイスしたいと思います。たぶん、あなたは私と同じくらい深く恋に落ちるでしょう。

blessed ハッシュ自体にすぎません。Perl オブジェクトを使用したくないということは、ハッシュをまったく使用したくないということとほぼ同じです。

于 2015-07-12T21:43:49.173 に答える
2

Perl がオブジェクト指向プログラミングを処理する方法を学ぶことを強くお勧めします。OOP は何も隠しておらず、すべてのメカニズムが公開されているため、OOP の入門としては断然優れていると思います。クラスはパッケージであり、メソッドはサブルーチンであり、コンストラクターは単なる別のメソッドです

小さなユーティリティ プログラムを作成している場合は、おそらく自分で Perl クラスを作成する必要はありませんが、他の人のライブラリを使用したいと思うとすぐに、OO Perl の使用方法を知る必要があることに気付くでしょう。

LWP多数の異なるクラスがあるため、おそらくより複雑なライブラリの 1 つですが、ドキュメントでは機能全体を説明する必要があり、少なくとも最初のうちは、利用可能なものの多くを使用しないことを覚えておいてください。

シンプルな Web ページを取得するには、LWP::UserAgentオブジェクトを作成し、それを目的getの URL に使用するだけです

use LWP;

my $ua = LWP::UserAgent->new;
my $res = $ua->get('http://www.example.com/');

これで、HTTP::Responseオブジェクトが作成されました。そのクラスのドキュメントを$res読んで、ステータスのチェックや HTTP ヘッダーとメッセージの本文の取得など、サポートされているメソッドを確認できます。

単純な LWP プログラミングについてはこれでほぼすべてですが、必要に応じてより複雑な状況に対応できるように、多くのオプションを利用できます。

最後に、 と呼ばれる機能的な HTTP モジュールが既に存在することを指摘しておく価値がありますLWP::Simple。非常に基本的な機能が必要な場合は、次のように書くことができます

use LWP::Simple;

my $body = get('http://www.example.com/');

Web ページを取得しました。もちろん、これでは HTTP トランザクションのステータスと応答メッセージのヘッダーを調べることはできません。そのため、その機能以上が必要な場合は、標準の LWP インターフェイスを使用する必要があります。

于 2015-07-13T02:12:18.973 に答える