「Perl URLをエンコード」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Perl URLをエンコード== http://sonic64.com/2003-08-31.html =====エンコード===== sub url_encode($) { my $str = shift; $str =~ s/([^\w ])/'%'.un…」) |
|||
22行目: | 22行目: | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
# GETされたページを出力 | # GETされたページを出力 | ||
− | open IN, " | + | open IN, "</var/log/httpd/access_log"; |
− | while ($line = | + | while ($line = <IN>) { |
if ($line =~/^([0-9]{1,3}([.][0-9]{1,3}){3}).*\[(.+)\].*(GET[^"]+).*/) { | if ($line =~/^([0-9]{1,3}([.][0-9]{1,3}){3}).*\[(.+)\].*(GET[^"]+).*/) { | ||
$url = url_decode($4); | $url = url_decode($4); |
2020年2月15日 (土) 08:05時点における版
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 矢木浩人