Perl输出函数传递的二维数组

楼主  收藏   举报   帖子创建时间:  2014-01-15 00:00 回复:0 关注量:421

最近用DBI模块写个了mysql接入函数,但得到的return一直不能输出结果,后来经过思考,原来是二维数组传递的问题,终于解决了,特此为记。

下面这个是mysql接入函数:

1234567891011121314151617
sub mysql_connect(){        use DBI;my ($sql,$db)=@_;my $usr="selectonly";my $passwd="yuyin_110";my $dbh=DBI->connect("DBI:mysql:$db",$usr,$passwd);if(!$dbh){print "connect lost\n";}else{my $sth=$dbh->prepare($sql)or die "Can’t prepare $sql: $dbh->errstr\n";$sth->execute()or die "Can’t execute the query: $sth->errstr";my $data=$sth->fetchall_arrayref();$sth->finish;return $data;}}

现在的问题是输出$data的内容,而$data返回的是一个二维数组的引用地址,可以用以下方法分层输出这个数组:

1234567891011
my $sql="select * from test limit 1000";my $b=mysql_connect($sql,"test");my @r=@$b;    #####因为$b获得的只是一个引用地址,可以用@变成数组,这个数组这储存了一系列一维数组地址foreach(@r){my @each=@$_;            ######道理与获得二维地址一样foreach(@each){print  $_."\t";}print  "\n";}