當前位置:成語大全網 - 新華字典 - PERLS是美國"衍生物"的壹種,本人不是很懂,請教哈....謝謝

PERLS是美國"衍生物"的壹種,本人不是很懂,請教哈....謝謝

Perl

Perl是壹種腳本語言。 最初的設計者為拉裏·沃爾(Larry Wall),它於1987年12月18日發表。Perl借取了C、sed、awk、shell scripting 以及很多其他程式語言的特性。其中最重要的特性是他內部集成了正則表達式的功能,以及巨大的第三方代碼庫 CPAN。

編程範型: Multi-paradigm

面市時間: 1987年

設計者: Larry Wall

最近釋出日期: 5.8.8 / 2006年1月3日

型態系統: Dynamic

啟發語言: AWK, BASIC, BASIC-PLUS, C語言, C++, Lisp, Pascal, sed, Unix shell

影響語言: Python, PHP, Ruby, ECMAScript

作業系統: 跨平臺

許可證: GNU General Public License, Artistic License

Website: www.Perl.org

Perl原名pearl,但是在這個語言官方發表前,拉裏·沃爾發現已經有個程式語言“pearl”,便將這個程式語言的名字改成Perl。對於Perl 這四個字母,有壹些解釋,包括充滿幽默感的“Pathologically Eclectic Rubbish Lister”。“Practical Extraction and Report Language”曾經出現在很多有關Perl的資料裏,包括官方的主頁。不過事實上這個長名字是後來湊出來的。它的名字第壹個字母大寫(Perl)時就指這個程式語言,無大寫字母(perl)時就指它的直譯器。將Perl寫成“PERL”是不適當的,因為它並非壹個縮寫字。

為了實現這樣的目標,並且又因為 Larry Wall 本人也是壹個語言學家,他設計Perl語言時使用了很多語言學的思維。相比 C、Pascal 這樣的“高級”語言而言,Perl語言直接提供泛型變數、動態數組、Hash表等更加便捷的編程元素。Perl 具有動態語言的強大靈活的特性,並且還從C/C++、Basic、Pascal 等語言中分別借鑒了語法規則,從而提供了許多冗余語法。使得程序員可以忽略計算機內部資料存儲、類型、處理方法、運算規則、甚至內存越界等等的細節,而將思考中心放在所需要的程序邏輯上。就這壹點而言,很多 Perl 程序員認為目前只有 Perl、Python等泛型語言才能稱為“高級”語言,而 C、Pascal 甚至 C++ 這些只能稱為“中高級”語言而已。可以說,在統壹變數類型和掩蓋運算細節方面,Perl 做得比 Python 更為出色。

由於從其他語言大量借鑒了語法,使得從其他編程語言轉到 Perl 語言的程序員可以迅速上手寫程序並完成任務,這使得 Perl語言是壹門容易用的語言。但問題是這樣寫出來的“類xx語言”的 Perl 程序對不熟悉這種語言的程序員卻如同天書,這使得 Perl 語言易寫不易讀。

Perl 是壹種 泛型語言,換句話說,在語言層面上,Perl 和大多數編程語言不同,不把變量分成整數、字符、浮點數等等,而只有壹種能接受各種類型數據的“泛型”變量。Perl的變量以$字符開頭。例如$a=5;$b="Hello";$c=3.2;都是合法的 Perl 語句。

Perl中各種變量的運算也很自由,數和含有數的字符串是等效的,可以把數字字符串參與數學計算,也可以反之,讓數字參與字符串的構成和操作。

除單個變量(Perl 稱為 Scalar)之外,Perl 還有兩種集合類型,分別是數組(Array,用@字符開頭)和關聯數組(Associative array,或者稱為Hash,用%開頭。類似 C++ 的 STL map 和 Python 的 Dictionary)。數組可以內含任意可變數目的變量。而Hash表,則可以在變量之間建立壹壹映射,就像字典壹樣,可以把不同的變量按照他們的邏輯關系組織起來。

因為Perl大量的創造冗余的語法,並且從其他語言中大量的借鑒語法,使得Perl的語法極其豐富和靈活。Perl***有下列幾種判斷語句:

Perl提供了可以直接調用的、數目眾多的函數。可以對以下對象進行操作:

* 數組: chomp, join, keys, map, pop, push, reverse, shift, sort, splice, split, unshift, values

* 數據庫: dbmclose, dbmopen

* 目錄: chdir, closedir, mkdir, opendir, readdir, rewinddir, rmdir, seekdir, telldir

* 文件: binmode, chdir, chmod, chown, chroot, close, eof, fnctl, fileno, flock, getc, glob, ioctl, link, lstat, open,

print, printf, read, readdir, readlink, rename, rmdir, seek, select, stat, symlink, sysopen, sysread, syswrite, tell,

truncate, umask, unlink, utime, write

* 組: endgrent, getgrent, getgrgid, getgrname, getpgrp, setgrent, setpgrp

* 哈希表(Hash;雜湊表): delete, each, exists, keys, values

* 主機: endhostent, gethostbyaddr, gethostbyname, sethostent

* 輸入: getc, read, sysread

* 處理器間通訊: msgctl, msgget, msgrcv, msgsnd, pipe, semctl, semget, semop, shmctl, shmget, shmread, shmwrite

* 數學: abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand

* 消息隊列: msgctl, msgget, msgrcv, msgsnd

* 其他: bless, defined, do, eval, formline, import, ref, scalar, syscall, tie, tied, undef, untie, wantarray

* 網絡: endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent

* 輸出: die, print, printf, syswrite, warn, write

* 口令: endpwent, getpwent, getpwname, getpwuid, setpwent

* 進程: alarm, die, dump, exec, exit, fork, getlogin, getpgrp, getppid, getpriority, kill, setpriority, sleep, system,

times, umask, wait, waitpid

* 協議: endprotent, getprotobyname, getprotobynumber, getprotoent, getservbyname, getservbyport, getservent, setprotoent

* 正則表達式: grep, pos, quotemeta, reset, split, study

* 範圍: caller, local, my

* 服務: endservent, getservbyname, getservbyport, getservent, setservent

* 套節字: accept, bind, connect, gethostbyaddr, gethostbyname, gethostent, getpeername, getservbyname, getservbyport,

getservent, getsockname, getsockopt, listen, recv, select, send, setsockopt, shutdown, socket, socketpair

* 字符串: chop, chr, crypt, hex, index, join, lc, lcfirst, length, oct, Ord, pack, q, qq, quotemeta, qw, qx, reverse,

rindex, split, sprintf, substr, uc, ucfirst, unpack, vec

* 時間: gmtime, localtime, time

* UNIX: chmod, chown, chroot, dump, endgrent, endhostent, endnetent, endprotent, endpwent, endservent, fnctl, fork,

getgrent, getgrgid, getgrname, gethostent, getlogin, getnetent, getpgrp, getppid, getpriority, getprotobyname,

getprotobynumber, getprotoent, getpwent, getpwname, getpwuid, getservbyname, getservbyport, getservent, ioctl, link,

lstat, readlink, select, setgrent, sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent,

sleep, syscall, times, umask, wait, waitpid