欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Perl直接入門(mén)詳盡指南

  最近接到一個(gè)任務(wù)是這樣的,一臺Solaris服務(wù)器上需要運行一個(gè)腳本,每天統計MySQL數據庫中的數據并生成報表。本來(lái)這是一個(gè)可以就事論事的小項目,但是為了以后的靈活和可擴展性,我設計了一個(gè)使用XML做統計模版配置的方案。由于在Bash下不太好實(shí)現XML的訪(fǎng)問(wèn),因此我考慮用Perl來(lái)實(shí)現這個(gè)腳本。

  Perl是一個(gè)強大的腳本語(yǔ)言,本來(lái)是設計應用在文本處理方面的,但是后來(lái)發(fā)展的越來(lái)越強大,已經(jīng)可以處理網(wǎng)絡(luò )、圖形、系統、文件等等各個(gè)方面的內容。Perl本身內置了豐富的操作符和函數,外部也有多年積累下來(lái)的大量模塊。但是不知道什么原因在國內好像很少有人用。關(guān)于Perl的歷史我就不多說(shuō)了,有興趣可以上網(wǎng)查一下。有一點(diǎn)要說(shuō)的是,目前Perl最新的版本是5.8.6,而Perl6雖然已經(jīng)設計很久了但是由于自舉問(wèn)題目前還沒(méi)有一個(gè)可用的版本。為了解決這個(gè)問(wèn)題,臺灣的唐宗漢發(fā)起的Pugs項目正在快速的實(shí)施中,可能很快就能有結果了,有興趣的朋友可以多多關(guān)注一下,也許還可以為開(kāi)源世界做點(diǎn)貢獻。

  雖然很早以前就了解過(guò)Perl,但是從來(lái)就沒(méi)有實(shí)際的用它做過(guò)項目,因此這次的實(shí)現是一個(gè)邊學(xué)邊做的過(guò)程。作為一個(gè)程序員,學(xué)習一種新的語(yǔ)言總會(huì )有一點(diǎn)慣性思維,加之Perl在語(yǔ)法上與C語(yǔ)言比較類(lèi)似。因此我想在這片文章中主要以C為背景做一個(gè)比較。這種比較不是比較語(yǔ)言上的優(yōu)劣,而是說(shuō)明同樣的功能如何在Perl中實(shí)現以及之間的區別。限于篇幅,具體的技術(shù)實(shí)現的細節我就不在這里多說(shuō)了,你可以在末尾的資源一節中找到很多相關(guān)的文章。如果你沒(méi)有接觸過(guò)Perl,我想你可能更希望看到學(xué)習Perl的過(guò)程中可能會(huì )遇到的一些問(wèn)題以及解決方法。

工欲善其事,必先利其器

  要寫(xiě)代碼,首先至少得有一個(gè)編輯器。Perl是跨平臺的一種解釋型語(yǔ)言,可以在Unix/Linux/Windows/Mac等平臺上運行。具體對應平臺上的編輯器,最簡(jiǎn)單的方案是Unix下用vi,Windows下用UltraEdit。當然也有商業(yè)化的IDE,不過(guò)我嘗試了一下發(fā)現并不是那么的好用,因此我在Windows平臺上以UltraEdit作為編輯環(huán)境,完成后移植到Solaris平臺上。

  關(guān)于環(huán)境的搭建,有這樣幾個(gè)需要注意的地方:

  1、 Windows平臺下對應的是ActivePerl,可以免費下載。

  2、 去UE的網(wǎng)站上下載Perl的AutoComp文件,可以實(shí)現自動(dòng)完成功能。

  3、 下載Perl對應的語(yǔ)法加亮的Tag文件并加入到UE中,可以更塊的發(fā)現拼寫(xiě)錯誤。

  4、 在UE設置一個(gè)快捷工具,命令行為C:\Perl\bin\perl.exe "%F"(捕獲輸出),可以實(shí)現快速運行并顯示結果。

  5、 如果你不喜歡UE,那么我推薦Source Insight

巧婦難為無(wú)米之炊

  起始從某種角度來(lái)說(shuō),程序員和廚子是一樣的。要做出一桌大餐來(lái),首先得看看手上有什么原料,然后才能琢磨一下用這些東西能做出什么好吃的來(lái)?;蛘哒f(shuō)想做什么東西,得先備好料才行。

  看看我們現在都有什么:一個(gè)編輯器,一個(gè)Perl的開(kāi)發(fā)環(huán)境,還有一個(gè)聰明的腦袋。這個(gè)任務(wù)中,我要處理命令行參數、訪(fǎng)問(wèn)MySQL數據庫(SQL)、讀寫(xiě)XML的配置文件以及輸出一個(gè)固定格式的報表文件。

  好了,去查查資料,看看訪(fǎng)問(wèn)數據庫和讀寫(xiě)XML都需要什么東西。正如同C語(yǔ)言本身帶了很多標準函數庫一樣,Perl本身也有函數庫,并把這些函數庫稱(chēng)為Module(模塊)。查了一下資料,發(fā)現要訪(fǎng)問(wèn)MySQL數據庫需要DBI和DBD::MySQL兩個(gè)模塊,那么去哪里找這些模塊呢。這里給大家介紹一個(gè)Perl的Module集散地 www.cpan.org,這里包含了八千多個(gè)Module,可以從這里下載到幾乎各種各樣的Module??梢允止は螺d后安裝,也可以使用工具來(lái)自動(dòng)安裝。在Windows下是可以使用ppm進(jìn)行自動(dòng)安裝,例如DBD的安裝過(guò)程如下:

  C:\>ppm

  …

  ppm> search DBI

  Searching in Active Repositories

  … 一大堆與DBI相關(guān)的包的列表,其中就包括DBI這個(gè)包

  ppm>install DBI

  …

  ppm>install DBD::mysql 如果知道模塊的名字也可以直接安裝

  …

  ppm>quit

  如此就安裝完成了。附帶說(shuō)一下,Linux下沒(méi)有ppm,但是有類(lèi)似的方式。輸入命令行

  perl –MCPAN –e shell

  然后install DBI; install DBD-mysql,和上面的操作幾乎是一樣的。


  提示:如果是在linux下安裝DBD::Mysql模塊,需要把mysql的bin目錄包含在環(huán)境變量PATH中,否則會(huì )提示找不到mysql_config文件。mysql一般是安裝在/usr/local/mysql下,因此可以通過(guò)執行命令行PATH=$PATH:/usr/local/bin/mysql/bin來(lái)將此路徑加入到環(huán)境變量中。

  訪(fǎng)問(wèn)XML有幾種包可以選擇:使用DOM和Simple模塊。Simple模塊是把XML用Perl的數組方式表示,而DOM是W3C維護的一個(gè)基于樹(shù)的XML文檔標準。具體用哪種就看個(gè)人的需要了。我使用的是DOM,因此要安裝XML-DOM包,方法同上。

芝麻開(kāi)門(mén)

  說(shuō)起編程語(yǔ)言,簡(jiǎn)單的來(lái)說(shuō)無(wú)非就是這樣幾個(gè)必不可少的基本元素:變量、數據、表達式、流程控制語(yǔ)句(包括條件、分支、循環(huán))、函數、對象。具體到語(yǔ)言上,大部分的內容只是表達的形式不同而已。而Perl與C又有什么區別呢?

  首先要知道,Perl是一種腳本語(yǔ)言。所謂的腳本,就是沒(méi)有主函數,從最開(kāi)始一行一行的按照順序解釋執行(老版Basic不也是如此嗎)。因此,盡管把你的思路轉化為流程用Perl表達出來(lái)吧。

  其次,Perl的設計中參考了很多語(yǔ)言的長(cháng)處,并避免了設計上的缺陷。因此Perl的很多語(yǔ)法你可能都會(huì )覺(jué)得似曾相識。我把Perl的語(yǔ)法總結了一下,和C語(yǔ)言做了一個(gè)簡(jiǎn)單的對比表格。表格左右兩邊的語(yǔ)句是C和Perl對應表達同一個(gè)功能各自的不同方式。如果讀者有C語(yǔ)言的經(jīng)驗,相信看到這個(gè)對比可以很快的上手吧?

語(yǔ)法元素

CPerl

Perl語(yǔ)法說(shuō)明

注釋

/* … */

# …

只支持單行注釋

變量

int a, b, c;

char c=’A’;

int x[10];

my ($a, $b, $c);

my $c=‘A‘;

my @x;

my %h;

聲明使用my標示

表示值的變量以$開(kāi)頭,表示數組的變量以@開(kāi)頭,表示哈希表的變量以%開(kāi)頭。

聲明可以省略(不建議)

字符串

char* h1=”hello\n”;

char* h2=”hello\\n”;

$h1=”hello\n”;

$h2=’hello\n’;

雙引號解釋內部的\n,而單引號則不解釋

一維數組

int arr[10];

arr[0]=0;

for(i=0;i<10;i++)

arr[i]=i;

my @arr;

$arr[0]=0;

@arr[3..5]=(3..5);

數組聲明以@標示

動(dòng)態(tài)數組,不需要指定大小

數組下標從0開(kāi)始

訪(fǎng)問(wèn)數組元素值的時(shí)候,要以$開(kāi)頭表示訪(fǎng)問(wèn)的是數值

[3..5]表示數組中下標為35之間的元素組成的數組

數組之間可以直接賦值

多維數組

int arr[10][10];

arr[0][1]=9;

my @arr;

$arr[0][1]=9;

Perl并不直接支持多維數組,而是以數組引用的方式間接支持。例如arr[0]的內容就是一個(gè)數組的引用地址。

指針

char c;

int* x=&c;

c=‘a(chǎn)‘;

printf(*x);

my $c;

my $x=\$c;

$c=‘a(chǎn)‘;

print $x;

\C中的&類(lèi)似,意思是取引用

 

void hello() {

  printf(“Hello\n”);

}

void (*hi)()=hello;

(*p)();

sub hello{

       print "Hello\n";

}

my $hi = *hello;

&$hi;

&表示調用函數

*取函數的代碼地址

不必用括號把參數括起來(lái)

調用時(shí)的括號也是可選的

條件語(yǔ)句

if (x>0) x=0;

x>0 ? x=0 : ;

if ($x>0) { $x=0; }

$x=0 if $x>0;

$x=0 unless $x<=0;

$x>0 ? $x=0 : ;

if 結構可以反轉,意義不變,注意前句沒(méi)有分號。

顧名思義, unless是“除非”的意思。這里的四個(gè)表達方式是等價(jià)的。注意第一種方式中,條件部分的圓括號和語(yǔ)句部分的花括號是不可省略的。

循環(huán)語(yǔ)句

foreach (@arry)

foreach my $key(@ary)

foreach $count (1..10)

for/while的語(yǔ)法都和C類(lèi)似。

foreach關(guān)鍵字也可以用for,意義不變。

函數

int max(int x, int y)

{

  return x>y?x:y;

}

 

int n=max(1,2);

sub max

{

       my ($x, $y)=@_;

       return $x>$y?$x:$y;

}

my $n=max(1,2)

注意下劃線(xiàn)”_”也是一個(gè)合法的變量名。而@_Perl內置的一個(gè)數組,內容為函數的參數。

my ($x, $y) 表示聲明了一個(gè)有兩個(gè)元素的數組,并將兩個(gè)元素映射到$x$y上。

($x,$y)=@_;則表示兩個(gè)數組之間的復制,@_中對應的元素的值就賦值給了$x$y.這是一個(gè)簡(jiǎn)便的寫(xiě)法,也可以這樣寫(xiě)

my $x=$_[0]; my $y=$_[1];

return是可選的,默認返回最后一個(gè)表達式的值

語(yǔ)法約束

1.       編譯時(shí)打開(kāi)編譯器所有的警告選項

2.       使用lint工具

 

3.       perl –w myprogram.pl 打開(kāi)運行警告開(kāi)關(guān),如果運行時(shí)Perl檢查到了可能的錯誤,會(huì )顯示警告信息,否則它默認是什么也不提示繼續執行。

4.       #!/usr/bin/perl –w 在代碼文件第一行中加入-w選項開(kāi)關(guān)

5.       use strict; 使用嚴格語(yǔ)法約束

運行

編譯后直接執行

 

1.       perl myprogram.pl 手工執行

2.       #!/usr/bin/perl

Unix下在代碼第一行加入,然后給文件加上可執行的屬性 chmod +x myprogram.pl,之后就可以用./myprogram.pl命令來(lái)運行。

3.       Windows下,安裝ActivePerl的時(shí)候,已經(jīng)將.pl后綴的文件和perl的解釋程序關(guān)聯(lián)起來(lái)了,因此直接雙擊文件圖標就可以運行。

  需要說(shuō)明的是,在Perl的世界中有一句名言“條條大路通羅馬”, 這句話(huà)的意思是說(shuō)同樣一件事情Perl允許你用很多種不同的方式去做。因此上表的例子風(fēng)格是按照C的習慣來(lái)寫(xiě)的,并且為了簡(jiǎn)化起見(jiàn),只是挑選了與C相似的內容。事實(shí)上,Perl包含了很多C沒(méi)有的東西,例如內置的Hash表、隊列、正則表達式、格式定義等等。

從框架開(kāi)始
  Perl有很多表達方式,我們可以選擇一種自己熟悉、容易理解的方式來(lái)寫(xiě)Perl的程序。例如,你是一個(gè)經(jīng)驗豐富的C程序員,那么你可以選擇以C的風(fēng)格來(lái)寫(xiě)Perl程序。下面是一個(gè)小小的樣板框架


#!/usr/bin/perl -w

use strict;


# 程序開(kāi)始的第一行語(yǔ)句,調用main函數

main();


# 定義main函數

sub main

{

}

  在這個(gè)框架下面,你幾乎可以容易就開(kāi)始你的Perl開(kāi)發(fā)了。如果需要處理命令行參數,就可以稍微的擴展一下這個(gè)框架。
#!/usr/bin/perl -w

use strict;

use Getopt::Std;

main();


my $configfile;


sub ProcessOptions

{

my $VERSION = ‘1.0.0‘;

my $USAGE = "pp.pl [-v | -c configfile]\n";

my $opts={};

 

die $USAGE unless( getopts("c:v", $opts) );

die $VERSION if ($opts->{‘v‘});

$configfile=$opts->{‘c‘} ? $opts->{‘c‘} : ‘config.xml‘ ;

}


sub main

{

ProcessOptions();

print $configfile;

}

  實(shí)際上,剩余的工作和以往的工作差不多了,編寫(xiě)一個(gè)一個(gè)的函數,并實(shí)現你的業(yè)務(wù)邏輯。對于你這樣一個(gè)聰明的程序員來(lái)說(shuō),學(xué)會(huì )Perl是一個(gè)很容易的事情。

常見(jiàn)問(wèn)題
  以我的學(xué)習經(jīng)驗來(lái)看,在開(kāi)發(fā)的過(guò)程中可能有一些常用但是很分散的細節問(wèn)題會(huì )讓你感到困惑。

  1、 程序的入口參數怎么???

  內置數組@ARGV包含了所有的運行參數??梢源蛴〕鰜?lái)看看 print @ARGV;

  2、 函數如何傳參數、取參數?

  每個(gè)函數內部都有一個(gè)內置的數組 @_ ,這個(gè)數組的元素就是函數的參數。例如傳入的第一個(gè)參數就是$_[0],第二個(gè)是$_[1]。唔,如你所見(jiàn),Perl的函數參數就是C中的動(dòng)態(tài)參數。

  3、 默認變量是什么

  這個(gè)可能會(huì )把你的頭搞暈。有一個(gè)內置變量 $_ ,

  4、 顯示消息、退出常見(jiàn)的簡(jiǎn)單寫(xiě)法
  die ‘Error on program’;

  也可以在條件不滿(mǎn)足的情況下使用
  die ‘Configuration error’ unless($doc->getDocumentElement);

  5、 格式化輸出

  可以用簡(jiǎn)單的print語(yǔ)句進(jìn)行一般的輸出操作,如果需要復雜的格式化輸出,可以使用printf語(yǔ)句……跟C的用法幾乎是一樣的。
  printf("pi=%.6f", 355/113);

  6、 =>是什么東西?

  在使用Hash表的時(shí)候,可以經(jīng)??吹?>這個(gè)符號。例如這樣的一個(gè)定義:
  my $account={

  ‘Simon‘=> ‘simon@email.com‘,

  ‘Jesse‘=> ‘jesse@email.com‘

  };

  其實(shí),=>符號跟逗號”,”是等價(jià)的。Perl里面的Hash表事實(shí)上是一個(gè)數組,只是把奇數位元素看做是Key(鍵),而把偶數位的元素看做是Value(值)。

  7、 關(guān)于引用的一點(diǎn)說(shuō)明

  Perl的引用類(lèi)似C的指針,所謂的引用事實(shí)上就是地址。取一個(gè)變量的地址用反斜杠”\”操作符,例如 $p=\$x; 那么$p就是一個(gè)指向$x變量的指針。要引用指針的值,使用”$”操作符,例如 print $$p; 就是打印$x的值。

  引用不單單可以引用變量,也可以引用數組、HASH表、函數,取函數的地址可以使用*操作符。

還能做什么
  Perl作為一個(gè)功能強大的腳本語(yǔ)言,可以應用在Web 編程、數據庫、XML、系統管理、圖形圖像、自然語(yǔ)言、壓縮、加密、郵件系統、軟件測試等各個(gè)地方。在CPAN上,你可以找到各種各樣你所需要的模塊支持。例如,你可以:

  編寫(xiě)系統管理的腳本

  和Apache結合起來(lái),編寫(xiě)CGI程序

  編寫(xiě)動(dòng)態(tài)網(wǎng)頁(yè)

  使用Net命名空間下的類(lèi)編寫(xiě)網(wǎng)絡(luò )應用程序

  使用Authen::Captcha模塊實(shí)現提交時(shí)的驗證碼的功能

  使用Storable模塊處理Perl的各種數據結構

  使用GD/Image::MagicK模塊處理圖形

  等等…

資源
  www.perl.org Perl的官方站點(diǎn)

  www.perl.com O’Reily 維護的關(guān)于Perl的站點(diǎn)

  www.cpan.org Perl的Module資源大全

  www.perlchina.com 中國Perl協(xié)會(huì )

  www.pm.org 世界各地的Perl用戶(hù)組織

  www.perlmonks.org 用Perl寫(xiě)詩(shī) J

  http://www-128.ibm.com/developerworks/cn/linux/sdk/perl/ IBM社區的Perl系列文章

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
perl文件操作
perl的特殊變量 - Perl - ChinaUnix.net
PHP面試題目總結歸納
Perl DBI 基礎
Perl +MySQl安裝說(shuō)明
MySQL數據庫技術(shù)(28)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久