URL取得リクエスト中に2つの文字列の違いを識別しようとしています(LWP :: Simpleを使用)。
私はURLを持っています。たとえばhttp://www.example.com?param1=x¶m2=y¶m3=z
空白の入力も処理されていることを確認しますが、すべてのパラメーターを確認しているため、現時点では関係ありません。まったく同じです。
また、ハードコードされたURLは、生成されたURLからコピーおよび貼り付けされます。
このURLは、次の場合に機能します。
my $url = "http://www.example.com?param1=x¶m2=y¶m3=z";
my $content = get($url);
それでも、ユーザーから提供されたパラメーターからURLを作成すると、getリクエストが機能しません(エラー:サイトから500)。
2つのURLを印刷して比較しましたが、違いはありません。見えない可能性のある文字をすべて削除してみました。
生成されたコードと静的文字列の出力は、ユーザー入力が静的文字列と同じであると想定しています(これは私が確実に行うことです)。
http://www.example.com?param1=x¶m2=y¶m3=z
http://www.example.com?param1=x¶m2=y¶m3=z
出力を印刷すると、見えない文字が削除されると思います。また、 http://www.perlmonks.org/?node_id = 882590で解決策をたどり、違いを指摘していますが、まったく表示されないことを考えると、理由はわかりません。
誰かが以前にこの問題に遭遇したことがありますか?何か明確にする必要がある場合、または追加情報を提供する必要がある場合は、お知らせください。
編集:問題と解決策
そこで、mobの提案を使用して違いを特定した後、生成されたURLにヌル文字があり、出力に出力されていないことがわかりました。つまり、
http://www.example.com?param1=x¶m2=y¶m3=z
実際には
http://www.example.com?param1=x¶m2=y¶m3=\000z
でした。
単純な正規表現を使用して$url =~ s/\000//g;
、その(およびその他の)null値を削除しました。