2

私は perl に慣れていないので、LWP を使用してページからリンクを取得する小さなスクリプトを作成すると、結果は次の形式にデコードされます。

http://www.perlmonks.org/%3fnode_id%3d376075

それよりも:

http://www.perlmonks.org/?node_id=376075

私はその構文に慣れていません...それは何と呼ばれていますか? 簡単に翻訳する方法はありますか?

4

2 に答える 2

1
http://www.perlmonks.org/%3fnode_id%3d376075

http://www.perlmonks.org/?node_id=376075

同等のURLではありません。URLへの適用uri_unescapeは決して正しくありません。抽出されたコンポーネントでのみ使用する必要があります。最初は。という名前のファイルにアクセスします?node_id=376075。2番目はデフォルトファイル(たまたまindex.pl)にアクセスし、それに名前が付けられた引数を渡しnode_idます。

おそらくあなたは実際に次のようなものを持っています

foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075

その場合、URIを使用します。パーツの抽出とデコードの両方を行います。ちゃんと。

use URI qw( );
my $url = URI->new('foo.cgi?redirect=http://www.perlmonks.org/%3fnode_id%3d376075');
my %form = $url->query_form();
say $form{redirect};  # http://www.perlmonks.org/?node_id=376075
于 2013-02-02T00:23:18.067 に答える
0

それが実際のURL エンコーディングです。

デコードに役立つ perl ライブラリがいくつかあり、その逆もあります。これはクイック検索でポップアップしたものです: http://www.perlhowto.com/encode_and_decode_url_strings

于 2013-02-02T00:15:12.717 に答える