in reply to why does push not default to $_?

Update: OK, I sit corrected :) I guess I missed the point of the question.

push is a Perl built-in function which requires 2 arguments.

Of related interest: Builtin functions defaulting to $_

Replies are listed 'Best First'.
Re^2: why does push not default to $_?
by ikegami (Patriarch) on Dec 04, 2008 at 21:42 UTC

    First of all, that's not true. The following are all acceptable:

    push @a; push @a, 'a'; push @a, 'a', 'b';

    Second, if it was true, that doesn't answer why the second parameter can't be optional, defaulting to $_.

      push @a;
      It is syntax which will compile, but it does generate a warning. Can you show an example of where this would be used?
      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 argum +ents 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 effec +t 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 ];
        Toolic, we perfectly know it's not implemented, we meditate WHY it's not implemented!

        Here a simple usecase:

        for (1 .. 100) { next if $_%2; push @even; }

        Cheers Rolf

        UPDATE...PS: Thanx for the interesting link to Builtin functions defaulting to $_
        You wouldn't use such a construct. It just showed that your statement wasn't true. So whatever point you were trying to get across was even more lost to me.