zoukankan      html  css  js  c++  java
  • perl 学习

    #########

     

    分类: Python/Ruby

    2012-12-27 17:21:14

     
    刚开始使用:cpan DBD::mysql 命令来安装该模块
    由于是编译的版本的SQL版本,已经在/etc/profile 中修改:export PATH=/usr/local/mysql/bin:$PATH 
    担心找不到mysql lib文件。 

    报错如下:
    # Tried to use 'DBD::mysql'.
    # Error: Can't load '/root/.cpan/build/DBD-mysql-4.022/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16: 无法打开共享对象文件: 没有那个文件或目录 at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
    # at (eval 6) line 2
    # Compilation failed in require at (eval 6) line 2.
    # BEGIN failed--compilation aborted at t/00base.t line 21.
    FAILED--Further testing stopped: Unable to load DBD::mysql
    make: *** [test_dynamic] 错误 9
    /usr/bin/make test -- NOT OK
    Running make install
    make test had returned bad status, won't install without force
    [root@localhost dbdata_backup]# perl -MCPAN -e shell
    Terminal does not support AddHistory.

    cpan shell -- CPAN exploration and modules installation (v1.7602)
    ReadLine support available (try 'install Bundle::CPAN')

    解决方式:
    shell> perl -MCPAN -e shell 
    cpan> install DBI 
    cpan> install DBD::mysql 安装成功。

    手工安装DBD安装技巧:
    注意mysql的环境变量,若没有则用 添加/usr/local/mysql/bin到环境变量PATH中
    PATH=/usr/local/mysql/bin:$PATH;
    export PATH (mysql的安装路径根据实际情况填写)
    wget http://cpan.perl.org/modules/by-module/DBI/DBI-1.601.tar.gz
     tar -zxvf DBD-mysql-4.006.tar.gz
     cd DBD-mysql-4.006
     perl Makefile.PL –mysql_config=/usr/local/mysql/bin/mysql_config
     make
     make test
     make install



    ####2
     

    分类: Oracle

    2012-09-03 11:49:39

     

    1.安装DBI和DBD::Oracle 模块。

    下载地址:http://search.cpan.org/

    搜索DBI,DBD::Oracle

    如果你的linux可以连接网络,执行命令:

    #wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.622.tar.gz

    #wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.50.tar.gz

    下载到当前目录。

    2.安装

    这里主要都是源码安装。

    解压到目录:DBI-1.622

    #tar –zxvf  DBI-1.622.tar.gz

    安装可以查看README文档。

    一般步骤为

    image 

    DBD::Oracle安装与DBI相同。

    3.

    配置环境变量

    # export ORACLE_HOME=/u01/oracle 
    # export ORACLE_USERID='scott/tiger@ora11gR2' 
    # export PATH=$ORACLE_HOME/bin:$PATH 
    # export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

    上面的方法只在当前登录环境有效,重新登陆后还需要重新配置。

    这里建议的方法是使用Oracle 用户。或者将Oracle用户下.bash_profile文件拷贝到root目录下。

    注意:LD_LIBRARY_PATH一定要修改,否则会报如下错误:

    install_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230.

    4.数据库连接简单示例:

    点击(此处)折叠或打开

    1. #!/usr/bin/perl -w
    2. use strict;
    3. use warnings;
    4. use DBI;
    5. my $dbname="orcl";
    6. my $user = "omc";
    7. my $passwd = "omc";
    8. my $dbh=DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect to database";
    9. my $sth = $dbh->prepare("select count(*) from fx_alarm");
    10. $sth->execute;
    11. my $count = $sth->fetchrow_array;
    12. $sth->finish();#Indicates to DBI that you are finished with the statement
    13. print $count." ";
    14. $dbh->disconnect;
    15. print "hello ";

    http://www.kanbingcheng.com

     
    ###4     变量 ,函数 ,以及 相关 函数 

    -> Perl 变量
    变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间。

    解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型、浮点型、字符串等。

    上一章节中我们已经为大家介绍了Perl的三个基本的数据类型:标量、数组、哈希。

    标量 $ 开始, 如$a $b 是两个标量。
    数组 @ 开始 , 如 @a @b 是两个数组。
    哈希 % 开始 , %a %b 是两个哈希。
    Perl 为每个变量类型设置了独立的命令空间,所以不同类型的变量可以使用相同的名称,你不用担心会发生冲突。例如 $foo 和 @foo 是两个不同的变量。


    -> 运算符:

    eq 检查左边的字符串是否等于右边的字符串,如果是返回 true,否则返回 false。


    -> 子函数
    用户可以通过改变 @_ 数组中的值来改变相应实际参数的值。

    向子程序传递列表
    由于 @_ 变量是一个数组,所以它可以向子程序中传递列表。

    但如果我们需要传入标量和数组参数时,需要把列表放在最后一个参数上,如下所示:


    ->正在表达式

    匹配:m//(还可以简写为//,略去m)
    替换:s///
    转化:tr///

    这三种形式一般都和 =~ 或 !~ 搭配使用, =~ 表示相匹配,!~ 表示不匹配。


    替换操作符 s/// 是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:

    s/PATTERN/REPLACEMENT/;
    PATTERN 为匹配模式,REPLACEMENT 为替换的字符串。

    例如我们将以下字符串的 "google" 替换为 "runoob":

    实例
    #!/usr/bin/perl

    $string = "welcome to google site.";
    $string =~ s/google/runoob/;

    print "$string ";

    更多正则表达式规则
    abc 匹配含有 abc 的字符串 (pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法.第一个 () 内所找到的字符串变成 $1 这个变量或是 1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 2 变量,以此类推下去.


    -> push 语法

    1. push @ARRAY, LIST
    将列表的值放到数组的末尾


    #!/usr/bin/perl

    # 创建一个简单是数组
    @sites = ("google","runoob","taobao");
    $new_size = @sites ;
    print "1. @sites = @sites "."原数组长度 :$new_size ";
    # 在数组结尾添加一个元素
    $new_size = push(@sites, "baidu");
    print "2. @sites = @sites "."新数组长度 :$new_size ";


    ->eval 语法

    #!/usr/bin/perl -w

    push ( @program,'$i = 1;');
    push ( @program,'$i = 3; $j = 2; $k = $i + $j');
    push ( @program, '$i = 3; return 24; $k = $i + $j');

    foreach $exp (@program)
    {
    $rtn =eval($exp);
    print $rtn," ";
    }


    在执行时, Perl 解释器会首先解析表达式的值,然后将表达式值作为一条 Perl 语句插入当前执行上下文。所以,新生成的语句与 eval 语句本身具有相同的上下文环境。这种方式中,每次执行eval 语句,表达式都会被解析。所以,如果 eval EXPR 如果出现在循环中,表达式可能会被解析多次。 eval 的这种方式使得 Perl 脚本程序能实时生成和执行代码,从而实现了“动态代码”。

    测试代码如下: eval 相当于 EOF linux ,需要转义 符号

    #$a = 19;
    eval "unless (29 < 20) { print "KO";print "KO";}";
    unless (29 < 20) { print "KO";print "KO";};

    print "p";


    • eval BLOCK
    • eval EXPR
    • eval


    eval 关键字在Perl 里起两种不同的但相关的作用。这些目的是用两种形式的语法
    来表现的, eval BLOCK 和eval EXPR。第一种形式捕获那些致命的运行时例外
    (错误),类似于C++ 或Java 里的“try 块”。

    ————————————————
    版权声明:本文为CSDN博主「zhaoyangjian724」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhaoyangjian724/article/details/51526721/


    -> unless 语法

    unless(boolean_expression 1){
    # 在布尔表达式 boolean_expression 1 为 false 执行

     
     ->our 和 my 语法



    our 和 my 一样,都是对变量的声明,
    不过 our 声明的是包全局变量,
    而 my 声明的是词法变量。

    不过,经过 our 声明的变量,它会变得像一个词法变量一样,
    其实这也是 our 存在的目的:用来欺骗 strict pragma,使 strict 以为它是一个词法变量,其实却不是。

    有一个简单的办法可以理解 our:
    1,你就把 our 声明的变量和 my 声明的当成一样。
    2,记住 our 和 my 的区别:our 声明的是一个包全局变量,因此在符号表中存储(可以通过全限定在任何地方访问),而 my 声明的是一个真正的词法变量,只能在闭合块中访问。

    代码例子

    复制代码
    my $var = 1;

    {
    my $var = 2;
    print $var, " ";
    }

    print $var, " ";
    复制代码

    输出:

    2

    1

    复制代码
    our $var = 1;

    {
    our $var = 2;
    print $var, " ";
    }

    print $var, " ";
    复制代码

    输出:

    2

    2

    ps:

    {}  中的 “ 需要加入 转义

  • 相关阅读:
    AngularJS实现跨域请求
    从古代名著看领导与被领导的艺术
    关于学习视频教程的反思之中的一个
    关于tcp中time_wait状态的4个问题
    AjaxPro因为汉字文件夹引发的IE兼容性问题
    MySQL无法重启问题解决Warning: World-writable config file ‘/etc/my.cnf’ is ignored
    安全运维之:Linux系统账户和登录安全
    mongodb导入导出备份恢复
    mongodb数据库备份恢复
    mongodb
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/11715168.html
Copyright © 2011-2022 走看看