LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: huhuegg

刚学perl,练习~

[复制链接]
 楼主| 发表于 2005-8-1 13:56:24 | 显示全部楼层
通过DBI模块访问mysql
[PHP]
#!/usr/bin/perl -w

#use DBI module
use DBI;

#define $dsn="DBI:database-type(cann't set with mssql):hostname";
my $dsn="DBI:mysql:mydata:localhost";
my $db_user="root";
my $db_pass="";

#set database handle $dbh
$dbh=DBI->connect($dsn,$db_user,$db_pass,{RaiseError=>1});

#set string handle $sth

######select from table and print(have data back);
$sth=$dbh->prepare("select * from address");
$sth->execute();
while ( @row = $sth->fetchrow_array ) {
        print "@row\n";
}
$sth->finish();

######insert into table and print(no data back doesn't need $str->finish();
$sth=$dbh->prepare("insert into address(id,name,email,telephone) values(2,'test2','test2@test2.com',12345678)");
$sth->execute();


$dbh->disconnect();
[/PHP]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-8 16:56:09 | 显示全部楼层
访问文件时加锁-计数器
[PHP]
#!/usr/bin/perl -w
#count file: 0
use strict;
use Fcntl qw(:flock);
my $sem="/tmp/sem.sem";
sub get_lock {
        open (SEM, ">$sem") || die "create sem file failed : $!";
        if (! flock(SEM, (LOCK_EX|LOCK_NB))) {
                print "Can not get the lock: $!\n";
        } else {
                flock(SEM, LOCK_EX) || die "Lock failed: $!";
                if (flock(SEM, (LOCK_EX|LOCK_NB))) {
                        print "Lock succeed!\n";
                }
        }
}
sub release_lock {
        close (SEM);
}
sub read_data {
        open(FH, "count") || die "$!";
        my(@DATA)=<FH>;
        chomp @DATA;
        close(FH);
        return(@DATA);
}
sub write_data {
        my(@DATA)=@_;
        open (FH, ">count") || die "$!";
        foreach (@DATA) {
                print FH "$_\n";
        }
        close(FH);
}

#main#
get_lock();
if (flock(SEM, (LOCK_EX|LOCK_NB))) {
        my @count=read_data();
        $count[0]=$count[0]+1;
        print "$count[0]\n";
        write_data(@count);
        release_lock();
        print "Count OK!\n";
} else {
        print "lease try later!\n";
}
[/PHP]
回复 支持 反对

使用道具 举报

发表于 2009-3-3 15:04:01 | 显示全部楼层
好啊,收了,顶顶顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表