In Perl, @_ is a pre-defined array containing the argument-list to a function. (See perlvar.)
This common shortcut assigns each parameter in turn to the specified variable, in a so-called “list context.” (“Contexts” are very important in Perl ...) In this case, the scalar, $filename, will get the first argument, and the array, @data, will get all the rest, no matter how few or how many there may be. This would be appropriate if the routine expects a variable number of parameters.
(Of course, my is Perl’s way of explicitly defining a local variable, and it accepts both a single symbol and a list of symbols.)