#!/usr/bin/perl use strict; use warnings; use utf8; use Getopt::Long; my $dict = "dat/edict.known"; #my $dict = "cedict.b5.known"; my $pager = "lv"; # lv -Ab ; less my $out = "dat/simple.tmp"; my $options = GetOptions("dict=s", \$dict, "pager=s", \$pager); my @history; my @redo; my %visited; my @visited; print <; unless (defined $pattern) { print "\n"; exit 0; } chomp $pattern; if ($pattern eq '<') { # previous / undo redo unless @history >= 2; push @redo, pop @history; $pattern = pop @history; } elsif ($pattern eq '>') { # next / redo redo unless @redo >= 1; $pattern = pop @redo; } elsif ($pattern eq '?') { # show history print "@history"; print " | @redo" if @redo; print "\n"; next; } elsif ($pattern eq '!') { # show all visited print "@visited\n"; next; } elsif ($pattern eq '.') { # same again redo unless @history; $pattern = pop @history; } push @history, $pattern; unless ($visited{$pattern}) { $visited{$pattern} = 1; push @visited, $pattern; } system "./known.view.pl '$pattern' $dict > $out"; system "$pager $out"; }