プログラム

#!/usr/local/bin/perl
#
#	文字ターミナル(vt100)を使うもの
#	1文字入力するとすぐ検索実行
#
(\#2と同じ)

while($c = ord($s = getc)){
	$len = length($pat);
	if($c == &ctrl('J')){ # リターンキー
	}
	elsif($c == &ctrl('B')){ # カーソル左移動
		$patcol-- if $patcol > 0;
	}
	elsif($c == &ctrl('F')){ # カーソル右移動
		$patcol++ if $patcol < $len;
	}
	elsif($c == &ctrl('A')){ # カーソル左端移動
		$patcol = 0;
	}
	elsif($c == &ctrl('E')){ # カーソル右端移動
		$patcol = $len;
	}
	elsif($c == &ctrl('K')){ # カーソルより右の文字消去
		$pat = substr($pat,0,$patcol);
	}
	elsif($c == 0x7f){ # 後退
		$patcol-- if $patcol > 0;
		$pat = substr($pat,0,$patcol) . substr($pat,$patcol+1);
	}
	elsif($c == &ctrl('D')){ # カーソル位置の文字消去
		$pat = substr($pat,0,$patcol) . substr($pat,$patcol+1);
	}
	else {
		$pat = substr($pat,0,$patcol) . $s . substr($pat,$patcol);
		$patcol++;
	}
	&lookup($pat);
	&clear;
	&display;
	&move(0,0);
	print $pat;
	&move($patcol,$patrow);
}