in reply to Passing arguments

Check out this experiment:

$ cat argvtest.pl printf "I saw %d arguments\n",$#ARGV+1; #show how many @argsin=@ARGV; # Snarf in the argnuments printf "They were \"%s\"\n",join(",",@argsin); # and what
a test run shows:
$ perl argvtest.pl 1 2 3 4 I saw 4 arguments They were "1,2,3,4"
 $#ARGV is the argument count minus one or in other words the last index of the array @ARGV or the list of arguments passed to the script.

With that in mind your test should look something like:

if ( $#ARGV < 0 ) { # NOTE: not != 0 printf "I expected an argument not simple refutation\n"; exit(0); }

UPDATE: Re-reading your original post I picked up on something...

You tried:

@RecievedArray=$ARGV[0];
Since @ARGV is an array of scalars you are just referencing the first element of @ARGV which is itself a scalar and attempting to assign that to an array.

I set up another experiment just to demonstrate what is going on:

use Data::Dumper; @ry=qw/ a b c d /; @ry2=$ry[0]; printf "First array:\n"; print Dumper(\@ry); printf "Second array:\n"; print Dumper(\@ry2);
When that code is run you get the following:
First array: $VAR1 = [ 'a', 'b', 'c', 'd' ]; Second array: $VAR1 = [ 'a' ];
As you can see all that gets assigned to the second array is the first element of the first array.

Hope all this helps.


Peter L. Berghold -- Unix Professional
Peter at Berghold dot Net
   Dog trainer, dog agility exhibitor, brewer of fine Belgian style ales. Happiness is a warm, tired, contented dog curled up at your side and a good Belgian ale in your chalice.