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

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

下面这个是mysql接入函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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返回的是一个二维数组的引用地址,可以用以下方法分层输出这个数组:

1
2
3
4
5
6
7
8
9
10
11
	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";
 
	}