Perl URLをエンコード
ナビゲーションに移動
検索に移動
Perl URLをエンコード
http://sonic64.com/2003-08-31.html
エンコード
sub url_encode($) {
my $str = shift;
$str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
$str =~ tr/ /+/;
return $str;
}
デコード
sub url_decode($) {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return $str;
}
httpdのログファイルから、IP、時間、URL(デコードしたもの)を出力
#!/usr/bin/perl
# GETされたページを出力
open IN, "</var/log/httpd/access_log";
while ($line = <IN>) {
if ($line =~/^([0-9]{1,3}([.][0-9]{1,3}){3}).*\[(.+)\].*(GET[^"]+).*/) {
$url = url_decode($4);
print "$1\t$3\t$url\n";
}
}
close IN;
sub url_decode($) {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return $str;
}
© 2006 矢木浩人