+sub action_list {
+ @ARGV==0 or
+ badusage "invalid arguments to list";
+ my $num = $min_number;
+ while ($num <= $#by_number) {
+ my $alias = $by_number[$num];
+ report $alias if $alias;
+ }
+}
+
+sub action_some {
+ (@ARGV==1 &&
+ $ARGV[0] =~ m/^(\d+)$/s) or
+ badusage "invalid arguments to some";
+ my ($count) = $1;
+ my $num = $min_number;
+ while ($count > 0) {
+ my $alias = generate $num;
+ if ($alias) {
+ report $alias;
+ $count--;
+ } else {
+ last if $num > $#by_number; # -N
+ $num++;
+ }
+ }
+}
+
+sub action_range {
+ (@ARGV==1 &&
+ $ARGV[0] =~ m/^(\d+)(?:([-+])(\d+))?$/s) or
+ badusage "invalid arguments to range";
+ my ($num,$op,$rarg) = ($1,$2,$3);
+ my $limit =
+ $op eq '+' ? $num+$rarg-1 :
+ $op eq '-' ? $rarg :
+ confess "$op ??";
+ for (; $num<=$limit; $num++) {
+ my $alias = generate $num;
+ report $alias if $alias;
+ }
+}
+