#!/usr/bin/env perl

use strict;
use warnings;

use Scalar::Util qw{looks_like_number};

my @choices;

for (@ARGV) {
  if (/^--$/) {
    push(@choices, <STDIN>);
  } 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];
