perl 學習

#########css

 

分類: Python/Rubyhtml

2012-12-27 17:21:14mysql

 
剛開始使用: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
 

分類: Oraclelinux

2012-09-03 11:49:39正則表達式

 

1.安裝DBI和DBD::Oracle 模塊。sql

下載地址:http://search.cpan.org/shell

搜索DBI,DBD::Oracle數據庫

若是你的linux能夠鏈接網絡,執行命令:express

#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."\n";
  14. $dbh->disconnect;
  15. print "hello\n";

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\n";

 

更多正則表達式規則
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\n"."原數組長度 :$new_size\n";
# 在數組結尾添加一個元素
$new_size = push(@sites, "baidu");
print "2. \@sites = @sites\n"."新數組長度 :$new_size\n";


->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,"\n";
}


在執行時, 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, "\n";
}

print $var, "\n";
複製代碼

輸出:

2

1

複製代碼
our $var = 1;

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

print $var, "\n";
複製代碼

輸出:

2

2

 

ps:

{}  中的 「 須要加入\ 轉義

相關文章
相關標籤/搜索