use subs 'push'; sub push (\@;@) { # print $_[0],$_[1]; CORE::push( @{+shift}, $_[0]? @_ :$_) ; } $\="\n"; my @a; $_="_"; print "--- one parameter"; push @a; print @a; print "--- long list of parameters"; @b=("x","y"); @a=(); push @a,@b; print @a; print "--- one element"; @a=(); push @a,"z"; print @a; print "--- one element list"; @a=(); @b=("z"); push @a,@b; print @a; print "--- empty list"; @a=@b=(); push @a,@b; print @a; __END__ --- one parameter _ --- long list of parameters xy --- one element z --- one element list z --- empty list _