in reply to Re: Tab Cursor Backspace
in thread Tab Cursor Backspace

Hello Rolf
How I currently edit selections is I take a "key" which in this case would be a first and last name combo which searches the file and prints the listing. Which brings me to a menu I've created asking which part of the entry I want to edit either email, phone number, etc. Depending on which selection is made it asks for the old email, press enter, then asks for new email, press enter and the entry is shown with the updated data. This approach has been working flawlessly however to make it easier and using less menus etc...I would like to make this happen in one screen not several which brings me to cursor control which is a realm I have not entered into. Thanks for the help.

Replies are listed 'Best First'.
Re^3: Tab Cursor Backspace
by LanX (Saint) on Apr 29, 2014 at 23:56 UTC
    I heard good things about Curses::UI considering pure text user interfaces.

    HTH!

    Cheers Rolf

    ( addicted to the Perl Programming Language)

      Hello Rolf,
      Below is the code I am working with inside the program. As you can see I am editing certain criteria on a per screen basis. However I would like to move this to one screen only.

      sub editcarowner { Title "Edit Car Owner"; print ("==============\n\n"); print ("| CAR MODEL: |\n\n"); print ("==============\n\n\n\n\n\n\n\n\n\n\n\n"); my $carmodel = <STDIN>; $carmodel = <STDIN> until defined $carmodel; chomp $carmodel; cls(); print ("================\n\n"); print ("| CAR YEAR: |\n\n"); print ("================\n\n\n\n\n\n\n\n\n\n\n\n"); my $caryear = <STDIN>; $caryear = <STDIN> until defined $caryear; chomp $caryear; cls(); print (" ==================================\n\n" +); print ("| CURRENT OWNER: |\n\n"); print (" =============================\n\n\n\n\ +n\n\n\n\n\n\n\n"); my $currentowner = <STDIN>; $currentowner = <STDIN> until defined $currentowner; chomp $currentowner; cls(); print (" =============================\n\n"); print ("| NEW CAR OWNER: |\n\n"); print (" =============================\n\n\n\ +n\n\n\n\n\n\n\n\n"); my $newcarowner = <STDIN>; $newcarowner = <STDIN> until defined $newcarowner; chomp $newcarowner; cls(); my $file = "DATA/cardata.txt"; local $^I = ".bak"; local @ARGV = ($file); while (<>) { chomp; my ($carmodel,$caryear,$carowner) = split(/\:/); if (($carmodel eq $carmodel) && ($caryear == $caryear)) { print "$carmodel:$caryear:$newcarowner\n"; }else { print "$_\n"; } } unlink("$file.bak"); print ("\n\n\n\n\n\n\n\n"); print ("CAR OWNER UPDATED SUCCESSFULLY!!\n\n\n\n\n\n\n\n\n\n\n\n"); sleep 3; cls(); cars(); } # END EDIT CAR OWNER

        If you want to keep this code and make the entering of information a little more comfortable, perhaps Term::ReadLine or Term::UI might be appropriate? Also, instead of scrolling the terminal you could clear it, see here and here.

        If you want to make a more "advanced" user interface with menu bars, dialogs, and such, have a look at Curses::UI::Tutorial (as recommended by LanX).