in reply to Re: <> to read command line options?
in thread <> to read command line options?

oh, I figured they should have used @ARGV, but this is a quote from them in the answer:

my @numbers;
push @numbers, split while <>;
foreach (sort { $a <=>$b } @numbers) {
printf "%20g\n", $_;
}

then later in the explanation of the answer:

The while loop is reading the input one line at a time (from the user’s choice of input sources, as shown by the diamond operator), and split is, by default, splitting that on whitespace to make a list of words—or in this case, a list of numbers. The input is just a stream of numbers separated by whitespace, after all. Either way you write it, then, that while loop will put all of the numbers from the input into @numbers.

The instructions in the exercise are:

Write a program to read in a list of numbers and sort them numerically +, printing out the resulting list in a right-justified column. Try it + out on this sample data: 17 1000 04 1.50 3.14159 –10 1.5 4 2001 90210 666

unless I'm reading it wrong and they actually wanted it in a file. I was assuming it was supposed to be as command line options. That's certainly possible, as I'm still new to all this! ;}

Replies are listed 'Best First'.
Re^3: <> to read command line options?
by nevdka (Pilgrim) on Aug 16, 2013 at 06:32 UTC

    Yes, it does want the numbers as a file, rather than as command line arguments. If you make a numbers.txt file with all the numbers, then use numbers.txt as the only argument to your program, it does what it's supposed to.

    The diamond operator <> lets you choose what to use for input in the arguments to your program. When you leave it empty, it will wait for user input. With a program like this one, it doesn't tell you that it's waiting for something, which was surprising when I did this exercise myself a couple of months ago :)