use strict; use warnings; use diagnostics; use Data::Dumper; my @a = 1..3; push @a; print Dumper(\@a); __END__ % ./728108.pl Useless use of push with no values at ./728108.pl line 9 (#1) (W syntax) You used the push() or unshift() function with no arguments apart from the array, like push(@x) or unshift(@foo). That won't usually have any effect on the array, so is completely useless. It's possible in principle that push(@tied_array) could have some effect if the array is tied to a class which implements a PUSH method. If so, you can write it as push(@tied_array,()) to avoid this warning. $VAR1 = [ 1, 2, 3 ];