#webliberty::Encoder.pm (2006/02/18) #Copyright(C) 2002-2006 Knight, All rights reserved. package webliberty::Encoder; use strict; ### コンストラクタ sub new { my $class = shift; my $self = { string => shift }; bless $self, $class; return $self; } ### URLエンコード sub url_encode { my $self = shift; $self->{string} =~ s/(\W)/'%' . unpack('H2', $1)/eg; return $self->{string}; } ### BASE64エンコード(参考:http://www.tohoho-web.com/) sub base64_encode { my $self = shift; my $base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; my($xx, $yy, $zz, $i); $xx = unpack('B*', $self->{string}); for ($i = 0; $yy = substr($xx, $i, 6); $i += 6) { $zz .= substr($base, ord(pack('B*', '00' . $yy)), 1); if (length($yy) == 2) { $zz .= '=='; } elsif (length($yy) == 4) { $zz .= '='; } } $self->{string} = $zz; return $self->{string}; } ### データ取得 sub get_string { my $self = shift; return $self->{string}; } 1;