28 九 09

前言:其实源码编译GTK+目的是为了安装iptux,什么是iptux?iptux是一款跟飞鸽通信的软件,类似WIN下的飞Q这些软件,比原来的飞鸽有所增强。自从我把openSUSE升级到11.2 M7之后,原来的飞鸽无法使用,但公司内部又要用飞鸽进行通信,没办法就是麻烦也得把飞鸽搞出来,搜出来这个软件,介绍得还不错,但是安装的时候总是说没有GTK+ 确实openSUSE没有,也没有现成的安装源,那就自己编译吧,经过两次的失败终于成功。其实原理很简单,排错掌握了也很快。

源码编译GTK+

1、确定环境变量,是比较关键的一步,因为编译软件时候有很多库的地址需要指定,系统的库版本太低或者不支持

mkdir -p /opt/gtk               ##后面所有的软件都安装在这个下面
export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH

2、下面安装的软件有一定的顺序

GTK+ 依赖软件包

GTK+ 的安装需要下面程序或者库的支持(可在列出的链接中找到各个软件包的下载地址):

1. C 编译器(如 GCC。GCC 的网站)
2. X 窗口系统库(网站)
3. pkg-config 工具(网站)
4. GNU make 工具(网站)
5. JPEG、PNG 以及 TIFF 图形库(下载页面 的 GTK+ Source 中的 dependencies 目录)
6. FreeType(网站)
7. fontconfig 库(网站)
8. GNU libiconv 库(当系统上没有 iconv() 函数的时候需要)(网站)
9. GNU gettext 软件包(当系统上没有 gettext() 函数的时候需要)([url=http://www.gnu.org/software/gettext/网站[/url])
10. GLib 库(下载页面 的 GLib Source)
11. ATK 库(下载页面 的 GTK+ Source 中的 dependencies 目录)
12. Cairo 库(下载页面 的 GTK+ Source 中的 dependencies 目录)
13. Pango 库(下载页面 的 Pango Source)
14. GTK+ 库(下载页面 的 GTK+ Source)
其实如果想安装gtk+ 应该去官网看下 并且会有相应的软件和安装方法 http://www.gtk.org/download-linux.html

##pkg-config安装

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz
tar zxvf pkg-config-0.22.tar.gz
cd pkg-config-0.22/
./configure –prefix=/opt/gtk/ && make -j2   && make install
cd ..

##glib 安装

wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.0.tar.gz
tar zxvf  glib-2.22.0.tar.gz
cd glib-2.20.0/
./configure –prefix=/opt/gtk    &&make -j2    &&make install
cd  ..

##安装图形化支持的一些软件 libpng jpeg tiff

wget http://ncu.dl.sourceforge.net/project/libpng/00-libpng-stable/1.2.40/libpng-1.2.40.tar.gz
tar zxvf DownLoad/libpng-1.2.40.tar.gz
cd libpng-1.2.40/
./configure –prefix=/opt/gtk/ && make -j2 && make install
cd ..
wget http://www.filewatcher.com/b/ftp/ftp.uni-leipzig.de/pub/linux/ftp%3Arobot.informatik.uni-leipzig.de/Sources/System/L
ibs.0.0.html
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure –prefix=/opt/gtk/ –enable-shared –enable-static && make -j2 && make install
cd ..
wget http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz
tar zxvf  tiff-3.8.2.tar.gz
cd tiff-3.8.2/
./configure –prefix=/opt/gtk && make -j2 && make install
cd ..
wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.9.tar.gz
tar zxvf freetype-2.3.9.tar.gz
cd freetype-2.3.9/
./configure –prefix=/opt/gtk && make && make install
cd ..
wget http://fontconfig.org/release/fontconfig-2.7.3.tar.gz
tar zxvf fontconfig-2.7.3.tar.gz
cd fontconfig-2.7.3/
./configure –prefix=/opt/gtk && make && make install

##安装atk

wget http://ftp.gnome.org/pub/GNOME/sources/atk/1.27/atk-1.27.90.tar.gz
tar zxvf atk-1.27.90.tar.gz
cd atk-1.27.90/
./configure –prefix=/opt/gtk && make -j2 && make install
cd ..

##安装cairo

wget http://cairographics.org/releases/pixman-0.16.0.tar.gz
tar zxvf pixman-0.16.0.tar.gz
cd ../pixman-0.16.0/
./configure –prefix=/opt/gtk/ && make -j2 &&make install
wget http://cairographics.org/releases/cairo-1.8.8.tar.gz
tar zxvf cairo-1.8.8.tar.gz
cd cairo-1.8.8/
./configure –prefix=/opt/gtk/ –with-x –enable-win32=no && make -j2 &&make install

##安装pango

wget http://ftp.gnome.org/pub/gnome/sources/pango/1.26/pango-1.26.0.tar.gz
tar zxvf pango-1.26.0.tar.gz
cd pango-1.26.0/
./configure –prefix=/opt/gtk/ –libdir=/opt/gtk/lib –with-x && make -j2 && make install
cd ..

##安装gtk+

wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.18/gtk+-2.18.0.tar.gz
tar zxvf gtk+-2.18.0.tar.gz
cd gtk+-2.18.0/
./configure –prefix=/opt/gtk/ –with-x && make -j2 && make install
cd ..

注意:安装到这GTK+就安装完毕了 如果中间有哪一步失败了 检查下
echo $LD_LIBRARY_PATH
echo $PKG_CONFIG_PATH
是否正确
最主要的还是看程序报错的 可能因为不同的系统缺少不同的东西

iptux安装

有了GTK+的支持 iptux安装就相对容易多了

cd ../iptux-0.4.5/
./configure
make -j2
make install

iptux使用和优缺点

1、有方便的查找功能,但没有排序
2、有每个用户的詳細信息
3、聊天窗口比原来的飞鸽强很多 但缺少提示消息被打开(这个功能其实很好能知道对方正在查看,但是现在没有了)
4、聊天记录有文本记录在 ~/.config/iptux/log/communicate.log 但界面上没有提供查看的方式
5、还提供了不少文件共享功能 文件传输有点不好 传完了才显示进度

iptux 截图

iptux









1 九 09

前言:
本次Linux软件推荐都是对个人使用过的软件进行一次整理,也可以看做是“openSUSE减肥第二课--删除多余的软件包”,因为自己总是喜欢安装些杂七杂八的软件,导致系统肥大而且又出些怪异的问题,这次想通过整理删除重复的并且不怎么使用的软件。这个列表要注意的是有一定的时效性和局限性,可以选择取长补短。列表对KDE和gnome下的软件也尽量进行一些对比、有相关的说明,介绍中的都是自己的经验之谈,如果有说错或者输入错误的请指出来。另外我想补充一点的是对于KDE一定尽量使用他自带的软件、虽然也有不好的软件,因为KDE的集成度比较高,很多软件都有相通的作用,对于使用来说会方便些。

最佳环境:
系统: Linux SUSE
桌面系统:KDE
时间 : 列表生成 2009-9-1

我使用的系统: openSUSE 11.1

-

Linux软件推荐列表: 整理得比较仓促,可以再改进。

网络

推荐软件

介绍

Linux下其它可用软件

浏览器

Firefox

速度快、功能丰富、插件牛 是查看、管理和调试网站的好工具

Konqueror KDE自带浏览器 集成效果很好是KDE下不错的管理工具

google-chrome google新浏览器 速度快 表现不俗

Opera : 处理图片最好的浏览器 模拟wap 浏览不错

电子邮件客户端

Kmail

KDE自带方便 功能齐全 与gmail同步相当方便 可以与 KDE个人信息中心(Kontact)聚合在一起

Evolution gnome下自带的邮件客户端

Thunderbird Mozilla的软件 界面简洁 个人觉得更新体积太大

RSS阅读

Akregator

对于离线阅读是相当不错的 功能全 显示方便自由 搜索快捷 可内嵌浏览器显示

WEB google Reader : 不便于离线访问

Thunderbird :收邮件的同时还可以订阅RSS

文件下载

Ktorrent

amule

wget

Linux下面的bitTorrent软件 P2P种子下载软件

Linux下的电驴 操作界面基本和win下一样

命令行下的下载方式 很方便

Kget : KDE自带的下载工具 感觉bug还是不少 不如直接wget

FTP客户端

FileZilla

界面丰富 像win下的cuteFTP

gFTP

即时通讯工具

Kopete

skype

g2ipmsg

QQ for Linux

choqok

KDE下自带通讯工具 直接MSN gtalk 等甚至有skype插件(可惜新版本不支持) 插件、主题丰富

Linux下的Skype软件

Linux下的飞鸽 局域网内部通信的好工具 需要少量gnome文件支持

Linux下的QQ 其实之前有EVA LumaQQ功能都比它强 但TX不支持

微博客户端 可能不算即时通讯的范围 支持twitter的所有功能 而且还可以支持第三方API

Pidgin gnome下自带的即时通信工具 支持几乎所有的通讯协议 高度整合 界面不是很好 最近已经支持视频通信

Empathy : 简介的界面 有点wingtalk的风格 功能不俗 同样支持视频通信 有取代pidgin的可能

其它MSN 工具:Emesene KMSN

qwit : 另外一款twitter 客户端工具

文件处理

推荐软件

介绍

Linux下其它可用软件

Office办公软件

openOffice

不仅可以支持MSoffice格式 而且拥有其它插件可以方便的进行编辑

Koffice 永中 Office:国产 高度模仿MS office

PDF阅读

okular

KDE下的PDF阅读器 比adobe自己出的reader要好太多 速度快 标签记录功能强大

Adobe Reader : 软件体积大 打开速度慢 功能简单

CHM阅读

Kchmviewer

KDE下功能接近win下的chm阅读软件 能支持大部分的chm

Chmsee : 可以试试 还可以 不需要KDE环境

图片查看

Gwenview

KDE自带查看图片软件 和KDE整合相当密切 想看 简单修改都是方便 基本需求都能满足

Fspot

Picasa Linux版本 界面完全模仿WIn下的 会有些小BUG 可提交在线到WEB管理很方便

图片编辑

Gimp

dia

是开源软件中跟photoshop的媲美的软件

流程图等画图工具 与visio相媲美 个人很喜欢

光盘记录

K3B

KDE下的自带记录软件 基本需求肯定是没有问题的

Brasero : gnome自带刻录软件 一样的方便

影音播放

MPlayer

amarok

KMPlayer

Hinedo

gtkpod

Linux下最强大的影音播放工具 支持几乎所有的格式 很多软件都是基于他做的

KDE下自带 功能强大的音乐播放器 支持ipod 封面、专辑等 能播放几乎所有的格式

KDE下的MPlayer的前端 会有些参数优化等方面 对视频支持较好

台湾的电台软件 要是可以更改电台列表就好了 不过有这样一款就不会寂寞了

Ipod管理器 管理功能最强的

Rhythmbox : gnome 自带MP3播放器 同样支持ipod播放 管理支持不太好

RealPlayer : Real自己出的Linux版本 比较难用 对自己的格式支持得好些 一般只用他的解码库文件

SMPlayer : gnome下的 类似于Kmplayer
VLC
: 据说是最好的电影播放器 可以尝试下

Kaffeine KDE下自带的播放器 默认支持的格式不多

Qmmp MP3播放器 有点类似 “千千静听”

网络电视

Gmlive : 整合了qsopcast mms 新版整合了pplive

ppstream : 官方出的Linux版本 不过还不适用所有平台

屏幕截取

ksnapshot

值得推荐的截图工具 支持多种截取方式 自动存取文件名等 实用方便的好工具

Gsnapshot : gnome下的截图工具

屏幕录制

Recordmydesktop wink Xvidcap vnc2swf 暂时没有特别满意的

虚拟机

VirtualBox

速度快 支持好 比VMware

Vmware Win下的虚拟机老大 但对Linux支持不太好

翻译工具

StarDict

实在也是没有太好了 支持得还是比较不错 可惜取词还是比较慢 没有整句翻译的

输入法工具

ibus

查看我的另外一篇文章 iBUS新一代输入法的安装使用

Scim : 老牌的输入法 也是很多系统自带的输入法工具

管理工具

推荐软件

介绍

Linux下其它可用软件

日常工具管理

Kontact

个人信息管理中心 这个是KDE自带的 其实只是个聚合软件 里面聚合了Kmail 日历KOrganizer(可与google日历同步) 种子阅读器Akregator 便签等

远程桌面管理

Rdesktop

有相关的图形化和win下差不多 命令行下更方便

Krdc

资源管理

Google 桌面

这个工具 占用系统资源少 只要一个快捷方式 输入关键词就可以把电脑上相关的资料显示出来 也可以直接去网上搜索 对于管理资源来说快捷方便

电源管理

Kpowersave

可以节省电 配置用电方案等

应该把K去掉还有gnome下的

系统管理

Iptraf

yast

查看网卡流量 当然自带的 管理器也是很不错的

YastSUSE系统特有的 管理工具高度集中 实用 其中包括了所有的管理 最近要出web版的yast 功能是越来越强

娱乐

推荐软件

介绍

Linux下其它可用软件

3D桌面

Compiz

Emerald Themer

KDE自带的KWIN速度快 占用资源少

KWIN KDE下的3D工具

3D在线网游

Regnum

支持winlinux下的3D网络游戏 还可以与国外的人一起交流 就是人少点

本地游戏

查看我写的另外一篇文章吧 Linux下的游戏同样精彩(安装与介绍)

其它小工具

推荐软件

介绍

Linux下其它可用软件

系统缓存清理

Bleachbit

可以支持多种系统 清除系统内部及相关应用程序的一些缓存文件

音乐载

Google music box

支持下载google上的音乐排行歌曲

专业软件

推荐软件

介绍

Linux下其它可用软件

网页编辑器

Quanta

可见即可得的html编辑工具 是几款对比下来觉得比较好用的一款

BlueFish

编译器

Code::Blocks

C C++编译器 见 c++编译器Code::Blocks安装(Linux









21 八 09

前言:其实2.8早出来了,一直在我的后台闪来闪去的,实在看不过去,还是升了吧。本身就自带自动升级,但是我的就是升不上去啊,老是报错,怎么办呢,只好手动来进行了,以下就是手动升级的相关步骤。

环境:Wordpress 2.7 升级到 2.8.4
系统:CentOS 5.3

升级步骤:
1、备份
最好还是准备下,不然把自己的心血写的东西都丢了可不值啊
备份两个东西:数据库 可以找个备份插件 也可以自己手动导出SQL语句 或者直接备份数据库文件
wordpress程序文件 : 其实这个中间有几个注意要保存的 A、原来的配置文件(有数据库连接方面的信息) B、有空间整体保存还是最保险的 C、最要注意 相册文件(自己定义的目录) 还有上传的相关文件(默认在wp-content/uploads下) D、最有用的文件 插件和主题 在wp-content下面

2、下载
从官方下载 latest.zip 我这里下载的 中文版的 http://cn.wordpress.org/wordpress-2.8.4-zh_CN.zip

3、解压并安排目录方法

解压到原来的同级目录  使用软件连接方法来安排目录
例:目录blog 为对外的目录 那么 原来的 wordpres-2.7 和wordpress-2.8.4都在同一目录

删除原来wordpress-2.7与blog的软连接
建议新连接 ln -s wordpress-2.8.4 blog  这样就很快切到新的了

4、拷贝原来的文件

拷贝2.7 目录下 wp-config.php 和 .htaccess(如果有做) 到新的目录下
拷贝原来的模板文件: \cp -r ../wordpress-2.7/wp-content/themes/*   wp-content/themes/  (记得加*号 不然会copy目录的 如果要强制覆盖请用\cp)
拷贝原来的插件文件:  \cp -r ../wordpress-2.7/wp-content/plugins/*   wp-content/plugins/   (如果你不怕麻烦 怕出错的话 只要copy你需要的插件就可以了 也可以配置完后再添加插件,有些插件可能会有版本的需求,而导致出错)
拷贝原来的上传文件:     cp -r ../wordpress-2.7/wp-content/uploads    wp-content/            (新安装有是没有这个目录的)
恢复相册文件:如果之前的目录已经定好了 想下载更新时还要这么麻烦 同样可以把相册目录移动blog 目录之外 利用软件连接来进行访问  这样可以避免备份的数据过大。

5、配置

在浏览器上运行 /wp-admin/upgrade.php 升级数据库
删除或者重命名 wp-admin 目录下的 install.php 和 upgrade.php

Ctr-F5 刷新自己的网站即可看到系统已经升级成功。

6、升级过程中遇到的问题(如自动升级):

1、问题:使用自动升级失败。

下载失败。:Operation timed out after 30 seconds with 1524600 bytes received

解决:修改 wp-admin/includes/file.php

把 444行的 $response = wp_remote_get($url, array(’timeout’ => 30));

30改成300 或 600

2、问题:PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature  进行解压安装时报的错

未解决

7、升级后的完善工作

添加新插件  修改模版
之后还对服务器软件进行了相关的升级

我的BLOG 升级后相关数据:

Wordpress 2.8.4

Nginx 2.8.8

PHP 5.2.10

Mysql 5.1.36









17 八 09

前言:《Perl语言入门(第四版)》这本书,最后三章看完了,可以说对perl有个基本的认识的,其实我觉得如果学过PHP的人来学这个,真是简单的不能再简单了,不过也可能会觉得他那“丑”了,但对于一个系统管理员来说Perl是一个很好的管理程序,何况像Perl这种语言基本都是系统自带的,就像Shell一样调用方便,这样才会让你可以自由的移动到不同的服务器上,直接进行操作等。之后的学习就是实践了,多看多回顾,最快的学习方法就是亲手写,解决了几个问题之后就会熟练了。

第十三章 字符串和排序
Perl 被设计成 90%擅长处理文本,10%处理其余的问题。
 
1、 使用索引寻找子串
index 函数
$where = index($big, $small);
index 函数总是报告子串出现的第一个位置。
某个子串最后出现的位置
my $last_slash = rindex("/etc/passwd","/"); #值为 4
 
2、 使用 substr 操作子串
substr 只处理部分的字符串
$part = substr($string, $initial_position, $length);
my $mineral = substr("Fred J. Flintstone", 8, 5);#得到“Flint”
它有三个参数:一个字符串,一个从 0 开始编号的初始位置(类似于 index 的返回值),以及子串的长度
 
indexsubstr 可以很好的一起工作。在本例中,我们提取出了字符串中字母 l 后的子串。
my$ $long = "some very very long string";
my $right = substr($long, index($long, "l" ));
如果想明确要求到达字符串的结尾处,无论其或长或短,可以像下例那样省略掉第三个参数.
 
3、 使用 sprintf 格式化数据
sprintf 函数的参数和 printf 的参数完全相同(除了可选的文件句柄外),但它返回的是被请求的字符串,而非打印出来。
 在“货币数字”中使用 sprintf
my $money = sprintf "%.2f",2.49997;
需要将所有有效的精度均保存在数字中,只是在输出时再进行四舍五入。
 
4、 高级排序
sort subroutine(排序子程序)
sub by_number {
if($a < $b){-1} elsif($a > $b){1} else {0}
}
my @result = sort by_number @some_numbers;
种三向的比较(three-way comparison)使用很频繁,太空船(spaceship)符号(<=>sub by_number {$a <=> $b }
cmp 操作符有些类似于字符串比较操作符如 ge
 
 依据值对 Hash 进行排序
:想根据 value 对 hash 排序。
sub by_socre { $score{$b} <=> $score{$a}}
 
 对多个 keys 排序
(发现两边的成绩相同)因为它比较这两个值得结果是 0my @winners = sort by_score_and_name keys %score;
sub by_score_and_name {
$score{$b} <=> $score{$a} #按照降序的成绩
or
$a cmp $b;  #字母顺序的名字
}
 
第十四章 进程管理
1、系统函数
最简单方法是使用 system 函数。
system "date";
system ' ls -l $HOME';
system "ls -l \$HOME";
注意有$时候的引号使用区别
 
system "long_running_command with parameters &";
它变成后台运行的进程
 
2、 避免 Shell
!system "rm -rf files_to_delete"or die "something went wrong";
这不是和系统调用相关的错误,因此 Perl 的$!变量不能描述。
 
3exec 函数
system 函数创建子进程,它会立刻去执行请求的操作,Perl 则暂停。exec 函数引起 Perl 自己处理请求的操作。可以将它看作"goto"而非子程序调用。
实际使用 exec 的情况很少,除了和 fork 一起使用外
exec "date";
die "date couldn'trun: $!";
 
4、环境变量
在 Perl 中,环境变量可以通过 %ENV 这个 hash 变量得到,hash 中的每一个 key 代表一个环境变量。
 
5、使用反引号捕捉输出
my $now = `date`; #捕获 date 的输出
print "The time is now $now";  #已经有换行符
因此从安全和效率的观点,应当使用 system。
 在 List context 中使用反引号
 
6、 像文件句柄那样处理
open DATE, "date|"or die "cannot pipe from date: $!";
open MAIL, "|mail merlyn"or die "cannot pipe to mail: $!";
在第一个例子中, 竖线在右边,命令被调入,且其被打开到 DATE 这个文件句柄进行读入,这和 shell 中的命令date|your_program 类似。 
在第二个例子中,出现在左边,命令的标准输入被连接到 MAIL 这个文 件句柄, 这和命令your_program | mail merlyn 类似。
 
7、 发送和接收信号
my $int_count;
sub my_int_handler {$int_count++}$int_count=0;
while(<SOMEFILE>){
…某些处理花了几秒钟时间…
if ($int_count) {
#中断发生
print "[processing interrupted… ]\n";
last;
}
}
 
当每一行处理时,$int_count 的值可能是 0 如果没人按下 Ctrl-C,因此循环会继续处理下一行。但是,如果中断发生,则中
断处理部分会增加$count_int,当在结尾处检测到它时,循环退出。
 
第十五章 Perl模块
1、查找模块
从两种途径可以得到模块:Perl 发布包中附带的以及从 CPAN 中下载并安装的。
CAPN 上:http://search.cpan.org, 或 kobes 上:http://kobesearch.cpan.org查找。
方法之一是使用 perldoc 相应文档。
$perldoc CGI
 
2、 安装模块
如果模块使用了 MakeMaker,则需运行的命令大致如下:
$ perl Makerfile.PL
$ make install
如果在默认目录中不能安装,你可以针对 Makerfile.PL 使用 PREFIX 这个参数来指定目录。
$ perl Makerfile.PL PREFIX=/Users/fred/lib
 
一些模块的创建者使用另一个模块:Module::Build,来构造及安装他们的模块。此时的命令如下:
$ perl Build.PL
$./Build install
 
3、使用简单的模块
 File::Basename 模块
 用 命 令 perldocFile::Basename,或者你系统中的文档,可以阅读其功能
 use File::Basename;
 
 4、仅使用模块中的一些函数
假定需要在以前的程序中加入 File::Basename,同时你发现有一个子程序叫做:&dirname。
因此,你有一个子程序其名字和此模块中的一个函数同名
例如 File:Basename,在 use 声明中,可以使用输入列表(import list)来指定所需的函数,那它将只提供这些函数。
use File:Basename qw/ basename /;
 
use File:Basename qw/ /; #没有引入函数
my $betty = &dirname($wilma); #使用我们自己的子程序 &dirname(这里没有显示)
my $name = "/usr/local/bin/perl"; 
my $dirname = File::Basename::dirname $name; #使用模块中的 dirname
 
5、File::Spec 模块
将它和目录名一起组合成一个全文件名(fullfilename)。
use File::Spec;
#得到上面的$dirname, $basename 的值
my $new_name = File::Spec->catfile($dirname, $basename);
 
6、CGI.pm
创建 CGI 程序
CGI 模块提供了两种方法,一种是普通的老式函数接口,一种是 OO 接口。我们使用第一种。
 
7、数据库和 DBI
DBI(数据库接口(database interface))模块不是 Perl 默认附带的,但它是最常用的模块之一,因为大多数用户都需要连接到某种类型的数据库上。
DBI 漂亮的地方在于,对于绝大多数常用的数据库,其接口都是一样的,
当安装了 DBI 后,也需要安装 DBD(数据库驱动程序(database driver))。从 CPAN 上搜索 DBD,会返回一长串的结果。
根据数据库服务器,及其版本安装正确的数据库驱动程序。
use DBI;
$dbh = DBI->connect($data_source, $username, $password);
 
一旦连接上数据库后,则进入了 preparing, executing, reading 查询的循环。
当结束时,需要断开和数据库的连接。
$dbh->disconnect( );