in reply to Reference is experimental

There's another way to ignore the first line: (undef, my @tmp) = <FILEHANDLE>; Here the first line will be sent to undef (so actually thrown away), and the rest will be sent to @tmp.

Besides, the my in front of @tmp means it's a brand new array that was just created, so with a different address/reference. You can write:
push @AoA, \@tmp;, because [ @tmp ] actually means "create new array, copy all the values of @tmp, and return a reference to that new array", while \@tmp; is just "take a reference to the newly created @tmp".