in reply to Type of arg 1 to push must be array (not private variable)

FWIW, as Basic debugging checklist teaches, use diagnostics/splain/perldiag
$ perl -e " $foo=[]; push $foo, 1 " Type of arg 1 to push must be array (not scalar dereference) at -e lin +e 1, at EOF Execution of -e aborted due to compilation errors. $ perl -Mdiagnostics -e " $foo=[]; push $foo, 1 " Type of arg 1 to push must be array (not scalar dereference) at -e lin +e 1, at EOF Execution of -e aborted due to compilation errors (#1) (F) This function requires the argument in that position to be of +a certain type. Arrays must be @NAME or @{EXPR}. Hashes must be %NAME or %{EXPR}. No implicit dereferencing is allowed--use the {EXPR} forms as an explicit dereference. See perlref. Uncaught exception from user code: Type of arg 1 to push must be array (not scalar dereference) a +t -e line 1, at EOF Execution of -e aborted due to compilation errors. at -e line 1 $ splain Type of arg 1 to push must be array (not scalar dereference) at -e lin +e 1, at EOF Type of arg 1 to push must be array (not scalar dereference) at -e lin +e 1, at EOF (#1) (F) This function requires the argument in that position to be of +a certain type. Arrays must be @NAME or @{EXPR}. Hashes must be %NAME or %{EXPR}. No implicit dereferencing is allowed--use the {EXPR} forms as an explicit dereference. See perlref. ^Z

And there you have it Arrays must be @NAME or @{EXPR} :)

  • Comment on Re: Type of arg 1 to push must be array (not private variable)(splain/diagnostics)
  • Download Code