Perl ArrayOfArrays到csv文件:第一个内部数组为空?

Perl ArrayOfArrays到csv文件:第一个内部数组为空?,perl,csv,Perl,Csv,下面的代码获取上传的csv文件,将其保存在数组中,然后我尝试使用Text::csvxs从数组中创建一个新的csv文件。 我知道我可以把上传的文件保存为“move_to”,但这不是我想做的 我的问题是: 当我保存csv文件时,这个csv文件的第一行和最后一行是空的,我不明白为什么。有人能给我解释一下吗 package MyApp::Controller::Main; use Mojo::Base 'Mojolicious::Controller'; use Text::CSV_XS qw( csv

下面的代码获取上传的csv文件,将其保存在数组中,然后我尝试使用Text::csvxs从数组中创建一个新的csv文件。 我知道我可以把上传的文件保存为“move_to”,但这不是我想做的

我的问题是: 当我保存csv文件时,这个csv文件的第一行和最后一行是空的,我不明白为什么。有人能给我解释一下吗

package MyApp::Controller::Main;
use Mojo::Base 'Mojolicious::Controller';
use Text::CSV_XS qw( csv );
use Encode;
use Cwd;

sub upload {
    my $self = shift;
    return $self->render(text => 'File is too big.', status => 200) if $self->req->is_limit_exceeded;
    return $self->redirect_to('/') unless my $newCsv = $self->req->upload('fileToUpload')->slurp;

    open(my $myFH, '<',\$newCsv) or die $!;
    my @lines = readline($myFH);
    close($myFH);
    my $checkCsv = Text::CSV_XS->new({sep_char => ';', quote_char => '"'});
    my @csvArray = [];
    # my $arrayIndex = 0; #temp
    foreach my $line (@lines){
        $line = decode('UTF-8', $line);
        $line =~ s/\N{U+FEFF}//; # remove the BOM
        $line =~ s/\s+$//g; # remove \n
        if ($checkCsv->parse($line) and $checkCsv->fields()){
            my @fields = $checkCsv->fields();
            push(@csvArray, \@fields);
        }
    }

    $self->app->log->debug($self->dumper(@csvArray));

    my $size = $self->param('fileToUpload')->size;
    my $name = $self->param('fileToUpload')->filename;
    csv (in => \@csvArray, sep_char=> ";", out => getcwd.'/lib/MyApp/files/'.$name);
    # $self->app->log->debug(getcwd);
    my $delay = 3;
    $self->stash(delay => $delay, message => "Thanks for uploading $size byte file $name.<br>
        You will be redirected in $delay seconds");
    $self->render('main/upload');
}
包MyApp::Controller::Main;
使用Mojo::Base'Mojolicious::Controller';
使用Text::CSV_XS qw(CSV);
使用编码;
使用化学武器;
子上传{
我的$self=shift;
如果超出$self->req->限制,则返回$self->render(text=>'文件太大',状态=>200);
返回$self->redirect_到('/'),除非我的$newCsv=$self->req->upload('fileToUpload')->slurp;
打开(my$myFH),更换

my @csvArray = [];   # Create empty array @cvsArray, then add a ref to an empty array to it.

更好的方法是,只需使用以下内容:

my @csvArray;        # Create empty array @cvsArray.
替换

my @csvArray = [];   # Create empty array @cvsArray, then add a ref to an empty array to it.

更好的方法是,只需使用以下内容:

my @csvArray;        # Create empty array @cvsArray.