use Tk; use Tk::HList; use Tk::ItemStyle; use Data::Dumper; my $user = $ARGV[0] || 'alex'; my $hash = {}; my ($location,$age,$use,$vendor,$feature); my $sec; #gui variables my ($hl,$ok,$alert); # Making the Gui my $mw = new MainWindow; $mw->geometry("500x200"); my $userframe = $mw->Frame(-width=>5,-height=>10)->pack(-side=>'top',- anchor=>'nw'); $userframe->Label(-text => "USER: $user")->pack(-side => 'left', -anchor => 'nw',-padx => 0); $userframe->Label(-text => "Set time")->pack(-side => 'left',-anchor => 'w',-padx => 0); my $frequency = $userframe->Entry(-width=>5,-textvariable=> \$sec)->pack(-side => 'left',-anchor => 'nw',-padx => 0); my $hlistframe = $mw->Frame()->pack(-fill => 'both', -expand => 1); $hl = $hlistframe->Scrolled('HList', -scrollbars => 'ose', -columns =>4 , -header => 1, -width => 100, -command => sub {print "AAA\n";}, -selectmode => 'browse', )->pack(-fill => 'both',-expand =>1 ); my $label1 = $hl->Label(-text => "location", -anchor => 'w'); $hl->headerCreate(0,-itemtype => 'window',-widget => $label1); my $label3 = $hl->Label(-text => "Age", -anchor => 'w'); $hl->headerCreate(1,-itemtype => 'window',-widget => $label3); my $label4 = $hl->Label(-text => "phone", -anchor => 'w'); $hl->headerCreate(2,-itemtype => 'window',-widget => $label4); open_report(); my $timer1 = $mw->repeat(5000, \&clear_data); MainLoop; sub clear_data{ print "Inside clear data \n"; read_file(); my $path = 0; for my $locationkey (sort keys %{$hash->{$user}}){ _refreshData($path,$locationkey); $path++; } } sub _refreshData { my $path = shift; my $location = shift; print "Inside refreshdata $path | $location \n"; my $availbl = $hash->{$user}->{$location}->{age}; my $chk = $hash->{$user}->{$location}->{phone}; if($hl->itemExists($path,0)){ #if($hl->info(exists, $path)){ print "itemexists ...\n"; $hl->itemConfigure($path,0,-text=> $hash->{$user}->{$location}->{location}); $hl->itemConfigure($path,1,-text=> $hash->{$user}->{$location}->{age}) ; $hl->itemConfigure($path,2,-text=> $hash->{$user}->{$location}->{phone}); } else { print "Inside else ....\n"; $hl->add($path); $hl->itemCreate($path,0,-text=> $hash->{$user}->{$location}->{location}); $hl->itemCreate($path,1,-text=> $hash->{$user}->{$location}->{age}) ; $hl->itemCreate($path,2,-text=> $hash->{$user}->{$location}->{phone}); } } sub read_file { print "Inside read file \n"; open(FP, "< info.txt"); while(){ if(/location (\w+) age (\d+) phone (\d+)/){ ($location,$age,$use) = ($1,$2,$3); print "$1 $2 $3\n"; } if (/^$user\s*/){ $hash->{$user}->{$location}->{location} = $location; $hash->{$user}->{$location}->{age} = $age; $hash->{$user}->{$location}->{phone} = $use; } } close(FP); } sub open_report{ read_file(); my $path = 0; for my $locationkey (sort keys %{$hash->{$user}}){ _insertData($path,$locationkey); $path++; } } sub _insertData { print "Inside insertdata\n"; my $path = shift; my $location = shift; print "Inside insertdata $path | $location \n"; $hl->add($path); $hl->itemCreate($path,0,-text=> $hash->{$user}->{$location}->{location}); $hl->itemCreate($path,1,-text=> $hash->{$user}->{$location}->{age}) ; $hl->itemCreate($path,2,-text=> $hash->{$user}->{$location}->{phone}); }