Created by
sironekotoro
last modified
| use strict;
use warnings;
# OUTPUT AUTOFLASH
# http://perldoc.jp/docs/perl/5.20.1/perlvar.pod
# 出力を溜め込まず、for 文の中で print 行が
# くる都度表示する特殊変数(特殊変数なので my は不要)
# この行がない場合、処理が全て終わってから一気に結果が描画される
$| = 1;
my $count = 0; # *の数を表示するカウンター用変数
# 最少0, 最大20
my $flag = 'plus'; # 星の数を増減する判断で利用するフラグ
# plus か minus の文字列しか入らない
# 想定
# 正弦波のロジックを組み立てられなかったので、以下の
# ように動く変数とフラグ制御を実装
# - 0から20まで増えるカウンタを用意
# - カウンタが10で割り切れる時に、* の表示の増減を逆転する
# フラグ(plus/minus)を用意
# - フラグが plus の時はカウンタの数だけ * を表示する
# - フラグが minus の時は 20 - カウンタの数だけ * を表示する
# - カウンタの数字が20になったら0で上書きする
# for文で1000回処理を繰り返す
for ( 1 .. 1000 ) {
sleep 1;
# フラグが plus であれば * を $count の数だけ表示して改行する
if ( $flag eq 'plus' ) {
print '*' x $count, "\n";
}
# フラグが plus でない(つまり minus )であれば * を
# 20 - $countの数だけ表示して改行する
else {
print '*' x ( 20 - $count ), "\n";
}
# カウントを増やす
$count++;
# カウントが20で割り切れる値であり、かつ、
# フラグが plus の場合は $count の最大値に達したと
# 判断
# フラグを plus から minus に変更する
if ( $count % 10 == 0 && $flag eq 'plus' ) {
$flag = 'minus';
}
# カウントが20で割り切れる値であり、かつ、
# フラグが minus の場合は最小値に達したと
# 判断
# フラグを minus から plus に変更する
elsif ( $count % 10 == 0 && $flag eq 'minus' ) {
$flag = 'plus';
}
# カウントが20に達したらカウントを0にする
if ( $count == 20 ) {
$count = 0;
}
}
|