私は perl に慣れていないので、LWP を使用してページからリンクを取得する小さなスクリプトを作成すると、結果は次の形式にデコードされます。
http://www.perlmonks.org/%3fnode_id%3d376075
それよりも:
http://www.perlmonks.org/?node_id=376075
私はその構文に慣れていません...それは何と呼ばれていますか? 簡単に翻訳する方法はありますか?
私は perl に慣れていないので、LWP を使用してページからリンクを取得する小さなスクリプトを作成すると、結果は次の形式にデコードされます。
http://www.perlmonks.org/%3fnode_id%3d376075
それよりも:
http://www.perlmonks.org/?node_id=376075
私はその構文に慣れていません...それは何と呼ばれていますか? 簡単に翻訳する方法はありますか?
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
それが実際のURL エンコーディングです。
デコードに役立つ perl ライブラリがいくつかあり、その逆もあります。これはクイック検索でポップアップしたものです: http://www.perlhowto.com/encode_and_decode_url_strings