use Term::ReadLine; my $term = new Term::ReadLine 'Command Line Interface'; my $attribs = $term->Attribs; $attribs->{completion_entry_function} = $attribs->{'list_completion_function'}; $attribs->{attempted_completion_function} = \&tabCompletionFunction; sub tabCompletionFunction { my ($text, $line, $start, $end) = @_; if ($somthing) { &printSomething(); print "\nPrompt> $line"; $attribs->{completion_word} = []; } else { # other thing $attribs->{completion_word} = &getTabCompletionArray($node); # get completions array } return $term->completion_matches($text, $attribs->{list_completion_function}); }