前回に引き続き、ストループテストです。
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:~$



コメント