これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションの9つを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドperlfaqXNUMXです。
プログラム:
NAME
perlfaq9 - Web、電子メール、ネットワーキング
VERSION
バージョン5.021009
DESCRIPTION
このセクションでは、Web サイトの運営、送受信に関する質問を扱います。
電子メールだけでなく、一般的なネットワーキングも可能です。
すべき I つかいます a ウェブ フレームワーク?
はい。フォームやユーザー、
データベース)では、リクエストとレスポンスを処理するフレームワークを使用する必要があります。
容易になります。
インタラクティブ性がない場合でも、次のようなものの使用を検討してください。
テンプレートツールキットまたは
Plack::Middleware::TemplateToolkitを使用すると、HTMLファイル(およびその他のアセット)のメンテナンスが
容易になります。
どの ウェブ フレームワーク すべき I つかいます?
この質問に簡単な答えはありません。Perlフレームワークは基本的なものから
ファイルサーバーや小規模なイントラネットから、大規模な多国籍多言語ウェブサイトまで、
国際ビジネスの中核です。
以下に、いくつかのフレームワークとコメントのリストを示します。
具体的な要件に応じて決定してください。まずはドキュメントを読んでから、
関連するメーリング リストまたは IRC チャネルで質問してください。
触媒
強力なオブジェクト指向とフル機能を備え、長い開発の歴史と
大規模なコミュニティとアドオンエコシステム。大規模で複雑な
サーバーを完全に制御できるアプリケーションです。
ダンサー
新しく、レガシーな要素がなく、軽量で簡単に習得できるAPIを提供します。
成長を続けるアドオンエコシステム。小規模なプロジェクトに最適で、習得も非常に簡単です。
初心者向け。
モジョリシャス
比較的新しい会社ですが、HTML5 と WebSocket などのリアルタイム Web テクノロジーに重点を置いています。
ウェブ::シンプル
現在実験段階であり、オブジェクト指向が強く、スピードを重視して構築されており、
マイクロウェブアプリ、カスタムフレームワークを構築したり、既存の
1 つの中央ディスパッチャーを備えた Plack 互換の Web アプリケーション。
これらはすべてPlackと相互作用するか、Plackを使用します。Plackの基本を理解する価値があります。
Perlでウェブサイトを構築する(便利なPlack::Middlewareがたくさんある)
)。
この試験は is プラック PSGI?
PSGIはPerlウェブサーバーゲートウェイインターフェース仕様であり、多くの
Perlウェブフレームワークは、ウェブサイトを構築するためにそれを理解する必要はないはずです。
使用したい部分はPlackです。
PlackはPSGIスタックを利用するためのツールセットです。ミドルウェアが含まれています。
コンポーネント、参照サーバー、および
Webアプリケーションフレームワーク用のユーティリティ。PlackはRubyのRackやPythonのPasteのような
WSGI。
Plackと独自のコードを使用してウェブサイトを構築できますが、
非常に基本的な Web サイトの場合は、Web フレームワーク (Plack を使用) を使用する方が適切なオプションです。
認定条件 do I 削除します HTML from a ストリング?
HTML::Strip、またはHTML::FormatTextを使用すると、HTMLを削除するだけでなく、
結果のプレーンテキストに少しだけ簡単な書式を設定します。
認定条件 do I エキス URLですか?
HTML::SimpleLinkExtorはHTMLからURLを抽出し、アンカー、画像、オブジェクトなどを扱います。
フレーム、URLを含むタグなど、様々なタグがあります。さらに複雑なものが必要な場合は、
HTML::LinkExtorまたはHTML::Parserの独自のサブクラスを作成することもできます。
あなたのニーズに特に適した例として、HTML::SimpleLinkExtor があります。
URI::Find を使用して、任意のテキスト ドキュメントから URL を抽出できます。
認定条件 do I フェッチ an HTML ファイル?
(ブライアン・ド・フォイによる寄稿)
libwww-perlディストリビューションを使用してください。LWP::SimpleモジュールはWebリソースを取得し、
内容は文字列として返されます:
LWP::Simple qw(get); を使用します。
私の$html = get( "http://www.example.com/index.html" );
リソースをファイルに直接保存することもできます。
LWP::Simple qw(getstore) を使用します。
getstore( "http://www.example.com/index.html", "foo.html" );
もっと複雑なことをする必要がある場合は、LWP::UserAgentモジュールを使用して作成できます。
独自のユーザーエージェント(ブラウザなど)で作業を完了します。
インタラクティブな Web ブラウザでは、WWW::Mechanize モジュールを使用できます。
認定条件 do I 自動化する an HTML フォーム 提出?
多くのページやフォーム、ウェブページを移動するなど複雑な操作を行う場合は、
このサイトでは、WWW::Mechanize が使えます。詳細はドキュメントをご覧ください。
GETメソッドを使用して値を送信する場合は、URLを作成し、フォームをエンコードします。
"query_form"メソッド:
LWP::Simple を使用します。
URI::URL を使用します。
私の$url = url('Lhttp://www.perl.com/cgi-bin/cpan_mod');
$url->query_form(モジュール => 'DB_File'、readme => 1);
$content = get($url);
POSTメソッドを使用する場合は、独自のユーザーエージェントを作成し、コンテンツをエンコードします。
適切に。
HTTP::Request::Common qw(POST) を使用します。
LWP::UserAgent を使用します。
私の$ua = LWP::UserAgent->new();
私の$req = POST 'Lhttp://www.perl.com/cgi-bin/cpan_mod'>,
[ モジュール => 'DB_File'、readme => 1 ];
私の $content = $ua->request($req)->as_string;
認定条件 do I デコード or 作ります それらの %エンコーディング on ウェブ?
ほとんどの場合、Webフレームワークとしてこれを行う必要はありません。
リクエストを行うと、LWP または他のモジュールがそれを処理します。
文字列を自分でエンコードするには、URI::Escapeモジュールを使用します。「uri_escape」関数は以下を返します。
エスケープされた文字列:
my $original = "コロン:ハッシュ#パーセント%";
私の $escaped = uri_escape( $original );
print "$escaped\n"; # 'Colon%20%3A%20Hash%20%23%20Percent%20%25'
文字列をデコードするには、「uri_unescape」関数を使用します。
私の $unescaped = uri_unescape( $escaped );
print $unescaped; # 元の状態に戻す
URI全体をエンコードしないように注意してください。各コンポーネントを個別にエスケープしてから、
それらを結合します。
認定条件 do I リダイレクト 〜へ 別の ページ?
ほとんどのPerl WebフレームワークはCatalystを使ってこれを行うためのメカニズムを持っています。
フレームワークは次のようになります。
$c->res->redirect($url);
デタッチ
Plackを使用している場合(ほとんどのフレームワークが使用しています)、Plack::Middleware::Rewriteは
Apacheから移行する場合や、常に更新したいURLがある場合は検討する価値があります。
リダイレクト。
認定条件 do I 置きます a password on my ウェブ ページ?
使用しているウェブフレームワークに認証システムがあるかどうか、それがあなたのニーズに合っているかどうかを確認してください。
ニーズ。
代わりにPlack::Middleware::Auth::Basic、または他のPlack
認証オプション。
認定条件 do I make 確か users することはできません 入力します 値 に a フォーム それ 原因 my CGI スクリプト 〜へ do 悪い
もの?
(ブライアン・ド・フォイによる寄稿)
スクリプトに不正なデータが送られてくるのを防ぐことはできません。クライアントに不正なデータを追加したとしても、
サイドチェックを無効化したり、完全に回避したりする人もいます。例えば、
LWPなどのモジュールを使用してウェブサイトに送信する場合があります。データの漏洩を防ぎたい場合は、
SQLインジェクションやその他の種類の攻撃を試みる(そしてそうしたいはず)場合は、
プログラムに入力されるデータを一切信頼しないこと。
perlsecのドキュメントにはデータセキュリティに関する一般的なアドバイスが記載されています。
DBIモジュールでは、プレースホルダーを使用してデータを入力できます。外部プログラムを実行する場合は、
「system」または「exec」の場合は、リスト形式を使用してください。他にも注意すべき点が多数あります。
ここに挙げるには多すぎるが、そのほとんどは、何も使用しないというカテゴリーに分類される。
使うつもりのないデータ。誰も信用しないでください。
認定条件 do I パーズ a mail ヘッダ?
Email::MIMEモジュールを使用してください。十分にテストされており、あらゆる複雑な処理にも対応しています。
現実世界で見られるもの(コメントの折り返しの空白、エンコーディング、コメントなど)。
Email::MIME を使用します。
私の $message = Email::MIME->new($rfc2822);
私の $subject = $message->header('Subject');
私の $from = $message->header('From');
すでに他の種類のメールオブジェクトを持っている場合は、それを渡すことを検討してください。
Email::Abstract を作成し、そのキャスト メソッドを使用して Email::MIME オブジェクトを取得します。
私の$mail_message_object = read_message();
私の $abstract = Email::Abstract->new($mail_message_object);
私の $email_mime_object を $abstract->cast('Email::MIME');
認定条件 do I PowerSchoolで、緊急連絡先情報を定期的にチェックし、 a 有効な mail 住所?
(一部アーロン・シャーマン提供)
これは一見単純な質問のように思えますが、実はそうではありません。2つの部分があります。
a) 電子メール アドレスが正しい形式であるかどうかを確認するにはどうすればよいですか?
b) 電子メール アドレスが有効な受信者を対象としていることを確認するにはどうすればよいですか?
そのアドレスにメールを送信して、相手が人間であるかどうかを確認することなく
あなたに答えるには、部分的に完全に答えることはできません bEmail::Validモジュールは両方の部分を実行します
a そして一部 b リアルタイムでできる限り。
メールアドレスを確認するための最良のアドバイスは、本人にメールアドレスを入力してもらうことです。
パスワードを変更するときと同じように、2回入力してください。これにより、入力ミスを防ぐことができます。
バージョンが一致する場合は、そのアドレスに個人的なメッセージを添えてメールを送信してください。メッセージが届いた場合は
戻ってきて、彼らがあなたの指示に従ったなら、それが本物であると確信できます。
偽造されにくい関連戦略としては、PIN(個人ID番号)を付与することが挙げられます。
後で処理するために、アドレスとPIN(ランダムなものが望ましい)を記録しておいてください。
送信するメールには、PINを記載したサイトへのリンクを記載してください。メールが返送された場合は、
有効ではないと分かっている。リンクをクリックしない場合は、アドレスを偽造したか、
(相手がメッセージを受け取ったと仮定して)最後までやり遂げることは重要ではないので、
心配してください。
認定条件 do I デコード a MIME/BASE64 ストリング?
MIME::Base64パッケージはMIME/QPエンコードと同様にこれを処理します。Base64のデコード
次のように簡単になります:
MIME::Base64 を使用します。
私の $decoded = decode_base64($encoded);
Email::MIMEモジュールは、Base64でエンコードされた電子メールメッセージ部分を透過的にデコードできるため、
開発者は心配する必要はありません。
認定条件 do I find ユーザーの mail 住所?
問い合わせてください。利用できるメールプロバイダはたくさんあるので、地元の
システムはユーザーの電子メール アドレスをどのように判別するかについて何らかの知識を持っています。
例外は組織固有のメール(例: [メール保護])ポリシー
プログラム内でコード化できます。その場合は、$ENV{USER}を参照できます。
$ENV{LOGNAME}、およびスカラーコンテキストでの getpwuid($<) は次のようになります。
私の$user_name = getpwuid($<)
しかし、あなたのポリシーが正しいかどうかについて推測することはできません。
そうです。ユーザーに聞くのが一番です。
認定条件 do I 送信 Eメール?
Email::MIME および Email::Sender::Simple モジュールを次のように使用します。
# まず、メッセージを作成します
私の$message = Email::MIME->create(
ヘッダー文字列 => [
から => '[メール保護]',
宛先 => '[メール保護]',
件名 => 「お誕生日おめでとう!」
],
属性 => {
エンコーディング => 'quoted-printable'、
文字セット => 'utf-8'、
},
body_str => "お誕生日おめでとうございます!\n",
);
Email::Sender::Simple qw(sendmail) を使用します。
メールを送信します($message);
デフォルトでは、Email::Sender::Simple は、$PATH に存在する場合、まず `sendmail` を試します。
通常はそうではありません。メールを送信するためにリモートメールサーバーを使用している場合は、
トランスポートクラスのいずれかを検討してみてください。執筆時点では、利用可能な
トランスポートには次のものが含まれます:
メール::送信者::トランスポート::Sendmail
これはデフォルトです。 mail (1)または mailx(1)メールを送信するプログラム
コードが実行されるマシンであれば、これを使用できるはずです。
電子メール::送信者::トランスポート::SMTP
このトランスポートはTCP経由でリモートSMTPサーバーに接続します。オプションでSSLを使用し、
SASL 経由でサーバーに認証します。
Eメール::送信者::トランスポート::SMTP:: TLS
これはSMTPトランスポートに似ていますが、TLSセキュリティを使用します。これを使用して認証できます。
STARTTLS 以降、サーバーがサポートするメカニズムを使用して、モジュールも同様にサポートします。
Email::Sender::Simple にトランスポートの使用方法を伝えるのは簡単です。
送信メール(
$メッセージ、
{
トランスポート => $email_sender_transport_object,
}
);
認定条件 do I つかいます MIME 〜へ make an 添付ファイル 〜へ a mail メッセージ?
Email::MIMEはマルチパートメッセージを直接サポートします。Email::MIMEオブジェクト自体は、
他のEmail::MIMEオブジェクトに添付することもできます。Email::MIMEのドキュメントを参照してください。
サポートされているすべての方法とその使用例を含む詳細については、こちらをご覧ください。
認定条件 do I read Eメール?
Email::Folder モジュールを次のように使用します。
Email::Folder を使用します。
my $folder = Email::Folder->new('/path/to/email/folder');
while(私の$message = $folder->next_message) {
# next_messageはEmail::Simpleオブジェクトを返しますが、
# Email::MIME オブジェクトの方が堅牢なので
私の $mime は Email::MIME->new($message->as_string);
}
Email::Folder名前空間には、さまざまなメールボックスをサポートするためのさまざまなクラスがあります。
これらのモジュールは一般的にかなり制限されており、 読書
書くよりも。
認定条件 do I find でる my ホスト名、 ドメイン名、 or IP 住所?
(ブライアン・ド・フォイによる寄稿)
Perl 5.7.3から標準ライブラリの一部となったNet::Domainモジュールは、
完全修飾ドメイン名 (FQDN)、ホスト名、またはドメイン名を取得します。
Net::Domain qw(hostname hostfqdn hostdomain) を使用します。
私の$host = hostfqdn();
標準ライブラリの一部である Sys::Hostname モジュールでもホスト名を取得できます。
Sys::ホスト名を使用します。
$host = ホスト名();
Sys::Hostname::Longモジュールは異なるアプローチを採用し、
完全修飾ホスト名:
Sys::Hostname::Long 'hostname_long' を使用します。
私の$hostname = hostname_long();
IPアドレスを取得するには、「gethostbyname」組み込み関数を使用して、名前を
数字に変換します。その数字を、ほとんどの人が理解しているドット付きオクテット形式(abcd)に変換します。
期待どおりに、Perl に付属する Socket モジュールの "inet_ntoa" 関数を使用します。
ソケットを使用します。
私の$address = inet_ntoa(
スカラー gethostbyname( $host || 'localhost' )
);
認定条件 do I フェッチ/プット an (S)FTP ファイル?
Net::FTP および Net::SFTP を使用すると、FTP および SFTP (セキュア FTP) サーバーと対話できます。
認定条件 できる I do RPC in Perl?
RPCモジュールの1つを使用します( )。
著者 そして COPYRIGHT
Copyright(c)1997-2010 Tom Christiansen、Nathan Torkington、およびその他の著者。
All rights reserved.
このドキュメントは無料です。 同じ条件で再配布および/または変更できます
Perl自体として。
配布に関係なく、このファイルのすべてのコード例はここに配置されます
パブリックドメイン。 あなたはあなた自身のプログラムでこのコードを使用することを許可され、奨励されています
あなたが適切だと思うように、楽しみのために、または利益のために。 クレジットを与えるコードの簡単なコメントは
礼儀正しく、必須ではありません。
onworks.netサービスを使用してperlfaq9をオンラインで使用する