in reply to Re^2: How to write testable command line script?
in thread How to write testable command line script?
First up: never just add stuff to suppress warnings or errors. Figure out what the cause is and fix the cause!
In this case the warning was telling you something you needed to know. Lets boil the code down a little to demonstrate the issue:
#!/usr/bin/env/perl use strict; use warnings; reduce(1); sub reduce { my @array = @_; print $array[-2]; }
Prints:
Use of uninitialized value in print at ...\noname1.pl line 10.
Changing the call to reduce(1, 2); works as expected. The actual problem is you are passing only one argument and using that to populate the array. You then try to access the array expecting two arguments.
Note that much of your code is fairly old school. In particular don't use & to call functions - it doesn't do what you expect. Also, don't use @array[$idx]. If you want a single element use $array[$id] - $ instead of @.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: How to write testable command line script?
by thechartist (Monk) on Nov 21, 2018 at 01:40 UTC | |
by GrandFather (Saint) on Nov 21, 2018 at 02:27 UTC | |
by thechartist (Monk) on Nov 21, 2018 at 03:31 UTC | |
by AnomalousMonk (Archbishop) on Nov 21, 2018 at 03:46 UTC | |
by thechartist (Monk) on Nov 21, 2018 at 04:02 UTC |