«前の日記(1999年11月13日) 最新 次の日記(1999年11月15日)» 編集

混沌の庭研究所

1998|06|07|08|09|10|11|12|
1999|03|04|05|06|07|08|09|10|11|12|
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|06|07|08|09|10|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|05|06|07|08|10|11|12|
2011|01|03|09|
2012|02|03|
2013|05|12|
2019|10|

1999年11月14日 日曜日 [長年日記]

_ [楓チャット][Perl] どこでもいっしょモード修正

いやぁ・・・splice関数なんてもんがあったんですな。配列から要素外すの、あんなに苦労したってのにっ。ついでにキーワードリストファイルの所在もサブルーチン内に書くように変更。で、こんな感じになりました。

sub dokosyo {
	my $word = $_[0];
	my %key_list_file = (
		'[人名]' => './dic/jinbutsu.dat',
		'[場所]' => './dic/basho.dat',
	);
	my @keyword = keys(%key_list_file);
	my @key_list;
	my $key2;
	
	srand;
	foreach $keyword (@keyword) {
		if ($word =~ /$keyword/) {
			open(DB, "$key_list_file{$keyword}") || ended('$key_list_file open error');
			@key_list = ;
			close(DB);
			while ($word =~ /$keyword/) {
				$key2 = splice(@key_list, rand(@key_list), 1);
				chomp $key2;
				$word =~ s/$keyword/$key2/;
			}
		}
	}
	return $word;
}

むう、結構短くなりましたな。この例の場合、キーワードリストファイルはdicってディレクトリを掘ってそこに格納してあることになります。