存档: 标签: ‘Perl’

Perl与MySQL链接

没有评论 2010年2月18日

接上文《Access转MySQL方法》。已经在MySQL里建了一个数据库,这个数据库可以在“C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data”目录下查到。现在要用Perl对这个数据库进行链接。

先用ActivePerl下载安装模块DBD-mysql,之后编辑链接代码如下:
 

#!/usr/bin/perl
use DBI;
my $dbname = "dbname"; #改成自己的数据库名字
my $location = "localhost";
my $port = "3306"; #这是mysql的缺省
my $database = "DBI:mysql:$dbname:$location:$port";
my $db_user = "root";
my $db_pass = "******"; #将******替换为对应的mysql数据库登录密码
my $dbh = DBI->connect($database,$db_user,$db_pass);
my $sql = "SELECT * FROM miRNA2gene where id = 1217";
my $sth = $dbh->prepare($sql);
$sth->execute() or die "无法执行SQL语句:$dbh->errstr";
my @row;
@row = $sth->fetchrow_array();
print join(",",@row) . "\n";
$sth->finish();
$dbh->disconnect();


该程序功能为查询数据库中编号为“1217”的TargetGene信息(所属miRNA为hsa-mir-9,gene_id为6646,gene_name为soat1,在Targetscan数据库中在hsa-mir-9中的分数为-0.2)。运行结果如图所示,红线划出部分为提取出来的信息(点击看大图):

dbi result Perl与MySQL链接

Windows+apache+CGI(Perl)

没有评论 2010年2月16日

之前一直用IIS,昨天下载了apache,今天对其进行了配置,以能进行Perl的CGI编程。操作系统:windows XP sp3.

步骤:

1.打开httpd.conf找到“#ScriptInterpreterSource registry”,去掉前面的“#”;

2.找到“Options Indexes FollowSymLinks”,在后面加上“ExecCGI”,即修改为:Options Indexes FollowSymLinks ExecCGI;

3.找到“AddHandler cgi-script .cgi”,加上“.pl”即可;

4.重启apache,OK

之后写一个Perl程序测试一下:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello,World.";

保存为test.pl,存在cgi-bin文件夹下。直接在浏览器地址栏输入:http://localhost/cgi-bin/test.pl,显示“Hello,World” 即为成功。

题外话:通常自己遇到一些电脑问题后会到网上搜索寻求答案,会找到很多日志、很多帖子。但我真的怀疑这些帖子到底有没有得到作者的亲自试验,还是来自毫不负责的随意臆想,亦或是来源于人云亦云的抄袭。就拿我今天配置安装PHP5来说吧,网上搜索到很多帖子,试了很多,都不成功。有的日志里写“如图所示”,但根本没有图,可想就是不定从哪里顺手抄袭而来的。好在最后找到了一篇非常好的日志,配置成功了PHP5:http://hi.baidu.com/ihhr/blog/item/4b058624d7da336a35a80f96.html。这篇日志是得到过我的亲自试验的,大家可以放心参考。希望网上以后能多一些这样实事求是的文章。

Perl函数递归的简单例子

没有评论 2009年12月11日

一个简单的Perl语言函数递归的例子:阶乘计算。@_是Perl语言函数传递参数时的参数列表,$_[0]即为第一个参数。

sub fun{
    if ($_[0] == 0||$_[0] == 1){
        return 1;
    }
    else{
        return $_[0]*&fun($_[0]-1);
    }
}

Perl:判断一个数组是否为另一个数组的子集

没有评论 2009年12月9日

[方法1]:对于数组中无重复元素,用join,将原问题转换成查找子串的问题

my @aa = qw(1 2 3 4 5);
my @bb = qw(1 3);
my $str = join "-",@aa;
for(@bb){
        print "no:$_" if "-$str-" !~ /-$_-/;             #智能模式匹配
}

>>原帖地址

[方法2]:对于数组中有重复元素,用%hash

use strict;
my @aa = (1,2,3,4);
my @bb = (1,2,2,2,3,4,4,5,6,7 ) ;
my %aa_hash=();
my %bb_hash=();
for(@aa){
        $aa_hash{$_}=' ';
}
for(@bb){
        $bb_hash{$_}=' ';
}
foreach(keys %bb_hash ) {
        if(exists $aa_hash{$_}){
                delete $aa_hash{$_};
                delete $bb_hash{$_};
        }
}
if((scalar keys %aa_hash) ==0 and (scalar keys %bb_hash)>0 ){
        print '@aa is @bb\'s child',"\n";
}

>>原帖地址

TestDaF之后的四个星期

2 条评论 2009年12月6日

今天早起,上海难得的好天气。湛蓝的天空,阳光直射入窗。两位党员都赶着上考研的课去了,LY同学今天日语三级,GOOD LUCK~

昨天晚上就在想,这个空间和域名买了大半个月了,也不能就这么荒废着啊,总得写点儿什么,于是就有了先写一篇流水账的打算。。。今天天气好,心情也好,不想去图书馆,就先在这里垫点儿土吧~

自从四个星期前考完了德福,至今几乎再没碰过德语。但德福考试成绩就像一颗重磅炸弹,随时都可能再次炸乱我的生活,不过那至少还要再过两个星期了~那这四个星期我都在做什么呢?除了小一个星期堕落在DOTA的世界里外,其余时间都在看书。原本是想用actionscript编一个小游戏出来,但最后还是将重点放在了Perl上,actionscript先放一放。

学Perl的原由来自于生物信息学(Bioinformatic)。在英国读生物学的表叔建议我,Perl语言很重要。趁两次德福考试的间隙,终于有机会接触这门神奇的外表看似火星语的语言。这星期把《Learning Perl》看完了,下周开始学习《Intermeidiate Perl》,还有Perl和CGI编程也在看。但Perl这方面的中文图书实在太少了,使我不得不去查看英文的原版文献。

另外看了一本清华大学出版社的《生物信息学基础》,对于生物信息学的研究内容、方向和方法都有了了解。其它的又看了一些关于密码学和加密解密的书。这些是我大一大二时候感兴趣的东西了,现在有了时间,重拾记忆。还有小说《斯巴达克斯》,终于一鼓作气看完了,让人看得荡气回肠。但其中也有一些问题,比如作者把女人在战争中的作用太过夸张,好像把男人显得都很弱智一样。虽说红颜祸水,但也没这么夸张的吧。

另外昨天晚上在卓越网订了一本书,叫做《为什么要相信达尔文》。传说很好。

恩,第一篇流水账就这样吧,以后我会常来的。

沪ICP备09091602号