| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Perl URLをエンコード

提供: MyMemoWiki
2020年2月15日 (土) 08:05時点におけるPiroto (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Perl URLをエンコード

http://sonic64.com/2003-08-31.html

エンコード
  1. sub url_encode($) {
  2. my $str = shift;
  3. $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
  4. $str =~ tr/ /+/;
  5. return $str;
  6. }
デコード
  1. sub url_decode($) {
  2. my $str = shift;
  3. $str =~ tr/+/ /;
  4. $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
  5. return $str;
  6. }
httpdのログファイルから、IP、時間、URL(デコードしたもの)を出力
  1. #!/usr/bin/perl
  2. # GETされたページを出力
  3. open IN, "</var/log/httpd/access_log";
  4. while ($line = <IN>) {
  5. if ($line =~/^([0-9]{1,3}([.][0-9]{1,3}){3}).*\[(.+)\].*(GET[^"]+).*/) {
  6. $url = url_decode($4);
  7. print "$1\t$3\t$url\n";
  8. }
  9. }
  10. close IN;
  11.  
  12. sub url_decode($) {
  13. my $str = shift;
  14. $str =~ tr/+/ /;
  15. $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
  16. return $str;
  17. }