#!/usr/bin/perl  use strict;  use warnings;  use Curses;  use Curses::Widgets;  use Curses::Widgets::Label;  use Curses::Widgets::ListBox;  my $win = Curses->new;  noecho();  $win->keypad(1);  curs_set(0);  my $l = Curses::Widgets::Label->new({          CAPTION => 'INFO:',          BORDERCOL => 'white',          BORDER => 1,          COLUMNS => 50,          LINES => 5,          VALUE => < Select item            CTRL + D  => Delete selected item  ENTER     => Exit example EOT          FOREGROUND => 'white',          BACKGROUND => 'grey',          X => 1,          Y => 1,          ALIGNMENT => 'L',                });  $l->draw($win);  my $lb = Curses::Widgets::ListBox->new({          CAPTION => 'List',          LENGTH => 10,          LINES => 10,          BORDERCOL => 'blue',          SELECTEDCOL => 'green',          FOREGROUND => 'white',          VALUE => 0,          FOCUSSWITCH => "\n",          X => 25,          Y => 10,          LISTITEMS => ['aaa'..'aaz' ],          CURSORPOS => 0,          INPUTFUNC => \&lb_scankey,      });  $lb->draw($win, 1);  $lb->execute($win);  $win->erase();  endwin();  sub lb_scankey {      my $mwh = shift;      my $key = -1;      while( $key eq -1 ) {          $key = $mwh->getch;          if( ord($key) == 0x04 ) {   # ^D pressed              my $items = $lb->getField('LISTITEMS');              my $curpos = $lb->getField('CURSORPOS');              splice(@$items, $curpos, 1)                  if scalar(@$items);          }      }      return $key;  }