diff -urN tiarra-20030920/ChangeLog tiarra-20030922/ChangeLog
--- tiarra-20030920/ChangeLog	2003-09-20 20:11:20.000000000 +0900
+++ tiarra-20030922/ChangeLog	2003-09-23 04:14:41.000000000 +0900
@@ -1,3 +1,20 @@
+2003-09-23  phonohawk  <phonohawk@lycos.co.uk>
+
+	* main/Mask.pm:
+	メモリを食い過ぎるので、コンパイル済み正規表現の
+	キャッシュ保存数を150個に減少。
+
+	* main/PersonalInfo.pm:
+	メソッドinfoに引数として真偽値を渡した時、
+	それが真であればnickとnameとhostの配列を返す。
+	wantarrayにすると互換性が失われるため。
+
+	* main/PersonalInfo.pm:
+	動作速度向上のため、AUTOLOADを廃止。
+
+	* module/Log/Channel.pm:
+	configのcommandを小文字で書くとログが取られない問題を解決。
+
 2003-09-20  phonohawk  <phonohawk@lycos.co.uk>
 
 	* main/ChannelInfo.pm, main/IRCMessage.pm,
@@ -840,7 +857,7 @@
 
 	* これ以前のログは書いていません。
 
-#       Id: $Id: ChangeLog,v 1.99 2003/09/20 11:06:20 admin Exp $
+#       Id: $Id: ChangeLog,v 1.100 2003/09/22 18:02:06 admin Exp $
 #   Author: $Author: admin $
-#     Date: $Date: 2003/09/20 11:06:20 $
-# Revision: $Revision: 1.99 $
+#     Date: $Date: 2003/09/22 18:02:06 $
+# Revision: $Revision: 1.100 $
diff -urN tiarra-20030920/main/Mask.pm tiarra-20030922/main/Mask.pm
--- tiarra-20030920/main/Mask.pm	2003-09-20 20:11:20.000000000 +0900
+++ tiarra-20030922/main/Mask.pm	2003-09-23 04:14:42.000000000 +0900
@@ -1,5 +1,5 @@
 # -----------------------------------------------------------------------------
-# $Id: Mask.pm,v 1.11 2003/09/20 11:06:19 admin Exp $
+# $Id: Mask.pm,v 1.12 2003/09/22 18:02:06 admin Exp $
 # -----------------------------------------------------------------------------
 # $Clovery: tiarra/main/Mask.pm,v 1.10 2003/07/24 03:08:26 topia Exp $
 package Mask;
@@ -223,7 +223,7 @@
 }
 
 # support functions
-my $cache_limit = 300;
+my $cache_limit = 150;
 my @cache_keys;
 my %cache_table;
 sub make_regex {
diff -urN tiarra-20030920/main/PersonInChannel.pm tiarra-20030922/main/PersonInChannel.pm
--- tiarra-20030920/main/PersonInChannel.pm	2003-09-20 20:11:20.000000000 +0900
+++ tiarra-20030922/main/PersonInChannel.pm	2003-09-23 04:14:41.000000000 +0900
@@ -1,8 +1,8 @@
 # -----------------------------------------------------------------------------
-# $Id: PersonInChannel.pm,v 1.5 2003/09/20 11:06:19 admin Exp $
+# $Id: PersonInChannel.pm,v 1.6 2003/09/22 18:02:06 admin Exp $
 # -*- cperl -*-
 # -----------------------------------------------------------------------------
-# $Id: PersonInChannel.pm,v 1.5 2003/09/20 11:06:19 admin Exp $
+# $Id: PersonInChannel.pm,v 1.6 2003/09/22 18:02:06 admin Exp $
 # -----------------------------------------------------------------------------
 # なるとや発言権を持っているかどうかの情報とPersonalInfoのセット。
 # -----------------------------------------------------------------------------
@@ -33,7 +33,8 @@
 }
 
 sub info {
-    shift->[PERSON]->info;
+    my ($this, $wantarray) = @_;
+    shift->[PERSON]->info($wantarray);
 }
 
 sub has_o {
diff -urN tiarra-20030920/main/PersonalInfo.pm tiarra-20030922/main/PersonalInfo.pm
--- tiarra-20030920/main/PersonalInfo.pm	2003-09-20 20:11:21.000000000 +0900
+++ tiarra-20030922/main/PersonalInfo.pm	2003-09-23 04:14:42.000000000 +0900
@@ -1,5 +1,5 @@
 # -----------------------------------------------------------------------------
-# $Id: PersonalInfo.pm,v 1.6 2003/09/20 11:06:19 admin Exp $
+# $Id: PersonalInfo.pm,v 1.7 2003/09/22 18:02:06 admin Exp $
 # -----------------------------------------------------------------------------
 # nick,username,userhost等を持つ個人情報保持クラス。
 # このオブジェクトはIrcIO::Serverが管理する。
@@ -27,7 +27,7 @@
     unless (defined $args{Nick}) {
 	croak "PersonalInfo must be created with Nick parameter.\n";
     }
-    
+
     my $def_or_null = sub{ defined $_[0] ? $_[0] : '' };
     my $obj = bless [] => $class;
     $obj->[NICK] = $def_or_null->($args{Nick});
@@ -35,37 +35,32 @@
     $obj->[USERHOST] = $def_or_null->($args{UserHost});
     $obj->[REALNAME] = $def_or_null->($args{RealName});
     $obj->[SERVER] = $def_or_null->($args{Server});
-    
+
     $obj;
 }
 
 sub info {
-    my ($this) = @_;
-    sprintf('%s!%s@%s',$this->nick||'',$this->username||'',$this->userhost||'');
+    my ($this, $wantarray) = @_;
+    $wantarray ?
+      @$this[NICK, USERNAME, USERHOST] :
+	sprintf('%s!%s@%s', $this->nick, $this->username, $this->userhost);
 }
 
-sub AUTOLOAD {
-    my ($this, $option) = @_;
-    (my $key = $AUTOLOAD) =~ s/^.*?:://g;
-
-    if ($key eq 'DESTROY') {
-	return;
-    }
-
-    my $idx;
-    my $constname = uc($key);
-    if ($this->can($constname)) {
-	$idx = $this->$constname;
+BEGIN {
+    foreach my $constname (qw/NICK USERNAME USERHOST REALNAME SERVER/) {
+	my $methodname = lc $constname;
+	eval qq{
+	    sub $methodname {
+		my (\$this, \$new) = \@_;
+
+		if (defined \$new) {
+		    \$this->[$constname] = \$new;
+		}
+		\$this->[$constname];
+	    }
+	};
     }
-
-    if (!defined $idx or !defined $this->[$idx]) {
-	croak "PersonalInfo doesn't have the information $key.\n";
-    }
-
-    if (defined $option) {
-	$this->[$idx] = $option;
-    }
-    return $this->[$idx];
 }
 
+
 1;
diff -urN tiarra-20030920/module/Log/Channel.pm tiarra-20030922/module/Log/Channel.pm
--- tiarra-20030920/module/Log/Channel.pm	2003-09-20 20:11:21.000000000 +0900
+++ tiarra-20030922/module/Log/Channel.pm	2003-09-23 04:14:42.000000000 +0900
@@ -1,5 +1,5 @@
 # -----------------------------------------------------------------------------
-# $Id: Channel.pm,v 1.9 2003/05/15 12:11:11 admin Exp $
+# $Id: Channel.pm,v 1.10 2003/09/22 18:02:05 admin Exp $
 # -----------------------------------------------------------------------------
 # Local: $Clovery: tiarra/module/Log/Channel.pm,v 1.4 2003/02/11 07:53:40 topia Exp $
 package Log::Channel;
@@ -99,7 +99,7 @@
     }
     
     # Log::Channel/commandにマッチするか？
-    if (Mask::match($this->config->command || '*',$message->command)) {    
+    if (Mask::match(lc($this->config->command || '*'),lc($message->command))) {    
 	$this->{logger}->log($message,$sender);
     }
     
