use strict;
use threads;
use threads::shared;
use Term::ReadKey;
$| = 1;

my $f : shared;

sub observe {
  ReadMode 'cbreak';
  while(1){
    my $key;
    while(1){ last if $key = ReadKey(0) }
    {
      lock $f;
      if ($key eq 'q'){ ReadMode 'restore'; exit;}
      if ($key eq 'p'){ $f == 1 ? $f-- : $f++;}
    }
  }
}

sub print_a {
  while(1){
    if($f == 1){
      print "a";
      sleep 1;
    }
  }
}

$f = 1;
my $ob = threads->create(\&observe);
my $pr = threads->create(\&print_a);

$ob->join;
$pr->join;
