in reply to Re^3: Adding a numeric key to list items and creating a user selection list
in thread Adding a numeric key to list items and creating a user selection list

I figured that out and used printf to achieve the initial spacing. I also figured out how to accept the comma separated input, however I am having a small issue with this. When it renders the output on the screen, it is separating the numeric identifier from the data. So, what I get is:

Enter Selection(s): 1,3 #this is what the user will input and the results output below

  1. 10.10.10.11
  3
.10.10.10.13

What I expect to see is this

  1. 10.10.10.11
  3. 10.10.10.13

I found that adding a trailing comma to the input 1,3, resolved the issue, but created another warning

Argument "\n" isn't numeric in subtraction (-)

# Import cluster hosts list and print sorted output print color('bold white') . "The following hosts were found: \n\n" . c +olor('reset'); use File::Slurp; my @chosts = read_file($chosts_file); my @vdbhosts = sort @chosts; foreach my $i (0..$#vdbhosts ) { printf '%-2s',""; print $i + 1 . ". $vdbhosts[$i]"; } print "\n"; ASSIGN_VDB_HOSTS: # Choose the hosts from the list of above print "Please select the hosts from the list above separated by commas + (1,2,3...)\n"; print "\n"; print "Enter selection(s): "; my $vdbhostinput = (<>); print "\n"; my @vdbvalues = split(',', $vdbhostinput); foreach my $i (@vdbvalues){ print " " . $i . ". " . $vdbhosts[$i - 1]; } print "\n";
  • Comment on Re^4: Adding a numeric key to list items and creating a user selection list
  • Download Code

Replies are listed 'Best First'.
Re^5: Adding a numeric key to list items and creating a user selection list
by hippo (Archbishop) on Sep 26, 2015 at 09:02 UTC

      Works like a champ! Now, on to validation. Thanks again!

      Update

      Resolved

      Maybe not the best solution but I changed the check to...

      foreach my $i (@vdblist){ if ($i == 0){ print BOLD WHITE ON_RED, "Error: $i does not correspond to a h +ost in the list!", RESET; print "\n\n"; goto CLUSTER_HOSTS; } elsif ($i > scalar $#vdbhosts){ print BOLD WHITE ON_RED, "Error: $i does not correspond to a h +ost in the list!", RESET; print "\n\n"; goto CLUSTER_HOSTS; } }

      Now it works!