前回に引き続き、ストループテストです。
sysvbannerで作ってみます。
bannerで大きく表示する色と、エスケープシーケンスの色、2つ干渉させたストロープテストです。
takk@deb8:~$ cat -n s.pl 1 @colors = split /,/,"RED,BLUE,YELLOW,GREEN,CYAN,PURPLE,WHITE"; 2 3 $rand_str = $colors[int rand 7]; 4 5 printf"\x1b[3%dm",1+int rand 7; 6 open(IN,"banner $rand_str |"); 7 @out=<IN>; 8 print " @out"; 9 print"\x1b[39m"; takk@deb8:~$
もう一つ干渉させる情報を増やしてみましょう。
バナーの中に文字を入れて、実際の色とバナーで作った文字とバナーの中の文字、3つの情報を一度に表示するスクリプトにします。
takk@deb8:~$ cat -n stroop.pl 1 @colors = split /,/,"RED,BLUE,YELLOW,GREEN,CYAN,PURPLE,WHITE"; 2 3 $rand_str_large = $colors[int rand 7]; 4 $rand_str_small = $colors[int rand 7]; 5 6 @a=split//,$rand_str_small; 7 8 printf"\x1b[3%dm",1+int rand 7; 9 open(IN,"banner $rand_str_large |"); 10 while(<IN>){ 11 s/#/ch()/ge; 12 print; 13 } 14 print"\x1b[39m"; 15 16 sub ch{ 17 push@a,$a[0];return shift @a 18 } takk@deb8:~$
コメント