Check out this experiment:
a test run shows:$ 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
$#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.$ perl argvtest.pl 1 2 3 4 I saw 4 arguments They were "1,2,3,4"
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:
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.@RecievedArray=$ARGV[0];
I set up another experiment just to demonstrate what is going on:
When that code is run you get the following: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);
As you can see all that gets assigned to the second array is the first element of the first array.First array: $VAR1 = [ 'a', 'b', 'c', 'd' ]; Second array: $VAR1 = [ 'a' ];
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. | |
In reply to Re: Passing arguments
by blue_cowdawg
in thread Passing arguments
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |