#!/usr/bin/env perl use strict; use warnings; use Scalar::Util qw{looks_like_number}; my @choices; for (@ARGV) { if (/^--$/) { push(@choices, ); } elsif (/^@(.+)$/) { open(my $fh, '<', $1); push(@choices, <$fh>); close($fh); } else { push(@choices, "$_\n"); } } open(my $tty, '<', '/dev/tty'); my $sel; until (looks_like_number($sel) && $sel > 0 && $sel <= @choices) { while (my ($i, $c) = each @choices) { print $i+1 . ') ' . $choices[$i]; } print $ENV{'PS3'} || '#? '; exit(1) unless defined($sel = <$tty>); } close($tty); print $choices[$sel - 1];