$ 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. |
|