in reply to World Builder: the recovery and archeology of old programs.
Why not provide a Tk (or other) GUI instead? It needen't be all that hard. Consider:
use strict; use warnings; use Tk; use Tk::DialogBox; use Tk::Listbox; my $mw = MainWindow->new (); my %starData; my @params = ($mw, \%starData, ); $mw->Button (-text => 'Known star', -command => [\&knownStar, @params] +)->pack (); $mw->Button (-text => 'New star', -command => [\&newStar, @params])->p +ack (); $mw->Button (-text => 'List stars', -command => [\&listStars, @params] +)->pack (); $mw->Button (-text => 'Quit', -command => [\&quit, @params])->pack (); MainLoop (); sub knownStar { my ($mw, $starData) = @_; my @stars = map {[split ',']} split "\n", <<STARS; Sol, G2,1.0 Alpha Centuri A, G4,1.08 Alpha Centuri B, K1,.88 Epsilon Eridani, K2,.30 Tau Ceti, G8, .82 70 Ophiuchi A, K1,.9 70 Ophiuchi B, K5,.65 Eta Cassiopeiae A,f9,.94 Eta Cassiopeiae B,k6,.58 Sigma Draconis, G9,.82 36 Ophiuchi A, K2, .77 36 Ophiuchi B, K1,.76 Hr 7703, K2, .76 Delta Pavonis, G7,.98 82 Eridani, G5,.91 Beta Hydri, G1,1.23 Hr 8832, K3, .74 STARS my @names = map {$_->[0]} @stars; my $dlg = $mw->DialogBox ( -title => 'Select known star', -default_button => 'OK', -buttons => ['OK', 'Cancel'], ); my $listbox = $dlg->add ('Listbox', -listvariable => \@names, -selectmode => 'single' )->pack (); return if $dlg->Show () eq 'Cancel'; my @sel = $listbox->curselection (); return unless @sel; print "@{$stars[$sel[0]]}\n"; $starData->{$sel[0]} = $stars[$sel[0]]; } sub newStar { my ($mw, $starData) = @_; # Generate new star data here } sub listStars { my ($mw, $starData) = @_; } sub quit { my ($mw, $starData) = @_; # Save handling here if required exit; }
|
|---|