until ( $cash > $goal or $date == 31 ) { # update prices foreach my $stock ( @ticker{@stock_names} ) { $$stock{price} += generate_random($$stock{volitility}); $$stock{price} = 0 if $$stock{price} < 1; } # liquidate holdings if price hits 0 foreach my $stock ( @stock_names ) { $portfolio{$stock} = 0 if $ticker{$stock}{price} == 0 } $date++; print qq|Last Day!! better sell your stock| if $date == 30; while (1) { notify_user(daily_report(\%portfolio, \%ticker, $cash, $date)); my $transaction = query_user( q|Would you like to (B)uy or (S)ell |, q|or are you (D)one? | ); if ($transaction =~/^s/i) { $cash += sell(\%portfolio, \%ticker); } elsif ($transaction =~/^b/i) { $cash = buy(\%portfolio, \%ticker, $cash); } elsif ( $transaction =~ /^d/i ) { last; } elsif ( $transaction =~ /^q/i ) { exit; } } }