perl学习笔记

这篇博客记录一些我学习perl时的一些笔记,持续更新:

1.perl连接数据库的两种方式

#!/usr/bin/perl
use POSIX qw(strftime);
use Encode;
use URI::Escape;
use DBI;
my $db = DBI->connect("DBI:mysql:database=mysql;host=localhost", "root", "123456", {'RaiseError' => 1});
$sql="select *  from table";
my $rs = $db -> prepare($sql);
                $rs -> execute;
           while($row= $rs->fetchrow_hashref()){
           $s=$row->{'status'};          
}
#!/usr/bin/perl


use Mysql;
use POSIX qw(strftime);
use Encode;
use URI::Escape;
$db=Mysql->connect("localhost","mysql","root","123456") or die("connect fail!!");
$query = "select * from table ";

        if($result->numrows==0){
                sleep(6);
                next;
        }
    while(%row=$result->fetchhash){
          $id = $row{"id"};
    }    

2.perl遍历二维hash

方法一:

$hash{“data”}{“data1”} = "二维hash";

foreach my $k (keys %hash) {
  foreach my $k1 (keys %{$hash{$k}}) {

  }
}

 方法二:

foreach my $key1 (sort keys %hash) #首先对key1进行排序
{    
     foreach my $key2 (sort {$hash{$key1}->{$b}<=>$hash{$key1}->{a}} keys %{$hash{$key1}}) #对value值按照数字大小进行逆序排序
#    foreach my $key2 (sort {$a<=>$b} keys %{$hash{$key1}})   #对key2按照数字大小进行排序
    {
        print $key1."t".$key2."t".$hash{$key1}->{$key2}."n";
    }

3.perl读取传进来的文件内容

#!/usr/bin/perl
use POSIX qw(strftime);
use Encode;
use URI::Escape;

$file=$ARGV[0];#获取第一个输入数据
open( FH, $file );#打开文件
#open( FH1,">", "data"); 写入文件内容
foreach $line ( <FH> ){
       chomp($line);#去除空格
        @arr=split(/\t/,$line);#按\t截取
        print  $arr[0].'\t'.$arr[1];
        #print FH1  $arr[0].'\t'.$arr[1]; #写入文件
}

close(FH);#关闭文件
#close(FH1);