Ngày 18/10/1987 Larry Wall tác giả của ngôn ngữ này lần đầu tiên đưa Perl vào sử dụng tại nhóm usenet comp.sources . Ngôn ngữ này phát sinh từ C và chịu ảnh hưởng bởi các ngôn ngưx khác như BASIC, awk, sed và UNIX Shell. Perl là viết tắt của Practical-Extraction and Report- Language. Mục đích ban đầu là tạo ra các bản báo cáo nhanh chóng và dẽ dàng.
CHƯƠNG 1: VÀI NÉT VỀ NGÔN NGỮ LẬP TRÌNH PERL 1.Lịch sử của Perl Ngày 18/10/1987 Larry Wall tác giả của ngôn ngữ này lần đầu tiên đưa Perl vào sử dụng tại nhóm usenet comp.sources . Ngôn ngữ này phát sinh từ C và chịu ảnh hưởng bởi các ngôn ngưx khác như BASIC, awk, sed và UNIX Shell. Perl là viết tắt của Practical-Extraction and Report- Language. Mục đích ban đầu là tạo ra các bản báo cáo nhanh chóng và dẽ dàng. 2. Các đặc trưng của Perl Các ngôn ngữ và công cụ lập trình hiện nay rất nhiều, vì thế rất nên biết rõ điểm mạnh và điểm yếu riêng của từng ngôn ngữ để có thể tùy chọn với những ứng dụng cụ thể. Ngoài ra một trong những mục đích củabản báo cáo này là viết về Perl cho cả các đối tượng đã có nền tảng là C hay Shell. Cho nên cần phải phân tích các đặc trưng của Perl. 1 | P a g e 2.1 Perl là một trình thông dịch Chương trình Perl được dịch đọc trọn vẹn và lưu trữ ở hình thức trung gian trước khi chương trình này được thực hiện. Tuy nhiên tốc độ xử lý sê không bằng các ngôn ngữ biên dịch như C hay C++ 2.2 Xử lý text rất mạnh Do có nhiều toán tử cũng như hàm để hỗ trợ riêng cho xử lý text nên Perl khác biệt với các ngôn ngữ khác là có tính chất xử lý text rất mạnh, có thể xử lý dễ dàng những tác vụ giống như C hoặc UNIX shell thường làm trong việc viết một Script nhưng có thể ngắn gọn và đơn giản hơn. 2.3 Perl có cú pháp giống C và Shell và có thể tích hợp với C Perl và C đều là những ngôn ngữ lập trình phổ biến. Mỗi ngôn ngữ có những điểm mạnh và điểm yếu riêng. C là một ngôn ngữ lập trình vạn năng, có tính thích nghi khả chuyển cao, cho phép can thiệp sâu vào hệ thống. Hơn nữa tốc độ biên dịch cũng như tốc độ chạy của các ứng dụng viết bằng C khá nhanh và ổn định. Trong khi Perl mặc dù chạy chậm hơn,nhưng lại rất mạnh ở xử 2 | P a g e lý văn bản, điều mà ngôn ngữ C không hỗ trợ nhiều. Hơn nữa 80% người bắt đầu học Perl đã từng làm quen với C hoặc C++. Cho nên càng dễ học Perl. Perl có thể tận dụng tới các thư viện của C và ngược lại(trong một số điều kiện nhất định)Perl từ version 5.0 có thể tích hợp khá dễ dàng với các ứng dụng viết bằng C hoặc C++. Đối với Shell, ngôn ngũ script cơ bản nhất trong UNIX, Perl rất giống ngôn ngữ này cả trong cú pháp lẫn hàm. Tuy nhiên có 1 vài điểm khác biệt đáng quan tâm. Một trong những điểm khác biệt lớn nhất giữa cách hoạt động của Perl và Shell là Perl không chỉ là ngôn ngữ phiên dịch. Chương trình Perl được dịch đọc trọn vẹn và lưu trữ ở hình thức trung gian trước khi chương trình này được thực hiện. Chương trình Shell được đọc và thi hành mỗi lần 1 lệnh. Điều này mang lại 2 lợi ích cho chương trình viết bằng Perl so với chương trình viết bằng Shell: + Đầu tiên là chương trình Perl chạy nhanh hơn nhiều so với chương trình Shell. Đó là do bộ biên dịch Perl kiểm tra cú pháp gỡ chú giải trước khi bắt đầu thực hiện mã 3 | P a g e + Thứ hai, bạn không phải lo lắng về chương trình Shell lớn làm ngưng nửa chừng việc thực thi do lỗi cú pháp, vì tất cả mã được phân tích trước khi bắt đầu làm việc Perl còn có tính năng cho phép bạn lập trình trên một máy rồi dời nó đến 1 nền khác mà không cần phải thay đổi nào. 2.4 Perl phát huy sức mạnh tối đa trên nền UNIX Các nhà quản trị hệ thống và phát triển ứng dụng UNIX thường phải dùng tới một số ngôn ngữu lập trình khác nhau để hoàn tất các tác vụ cần thực hiện. Ví dụ như để xử lý một file trong UNIX ta phải viết 1 đoạn Shell script sử dụng sh hoặc awk hay grep, và để biên tập file đó cần dùng đến shed. Để can thiệp sâu vào hệ thống UNIX, ta lại phải dùng nhiều đến C. Chính vì thế nảy sinh nhu cầu cần sử dụng một ngôn ngữ vừa dễ viết, dễ phát triển, lại vừa xử lý một cách có hiệu quả nhiều tác vụ. rong khi đó Perl lại là một trong những ngôn ngữ mạnh nhất trên UNIX. Nó chứa toán tử cung cấp hầu hết các hàm mà người lập trình muốn thực hiện trong môi trường UNIX. Chính vì thế, bên cạnh C, Perl là một ngôn ngữ được cộng đồng Phần mềm 4 | P a g e mã nguồn mở sử dụng rộng rãi trên thế giới. Những người biết rõ ngôn ngữ lập trình awk sẽ không ngạc nhiên là Perl mượn nhiều đặc sắc của awk. Perl cũng bao gồm 1 vài đặc tính hay nhất của C, sed, và ngôn ngữ Shell trong UNIX như là bash và tcsh. 2.5 . Perl có thể chạy trên các môi trường khác nhau - UNIX PERL chạy trên môi trường Unix. - PERL FOR WINDOWS NT chạy trên môi trường Windows NT. -WIN PERL chạy trên môi trường Windows 95/ Windows 98. 2.6 Perl cũng là một ngôn ngữ đa nhiệm Perl được tối ưu hóa cho xử lý văn bản . Trong những phiên bản hiện thời, Perl cũng bao gồm nhiều tính năng bổ sung như lập trình socket, tích hợp với C. Từ phiên bản 5.0, có thêm hướng đối tượng. Mặc dù, ta hay nghe nói Perl là để lập trình cho web, nhưng trên thực tế không phải như vậy. Perl còn là một ngôn ngữ lập trình hệ thống khá mạnh trong Unix 5 | P a g e 2.6 Perl là một ngôn ngữ rất thích hợp với CGI và Socket 2.6.1 Các CGI script Perl là một trong những ngôn ngữ thông dụng nhất để tạo ra những ứng dụng CGI(Common Gateway Interface). Có hàng nghìn ví dụ lập trình CGI động trong Perl. Perl có thể được sử dụng để tạo ra những trang Web động Một trong những ứng dụng phổ biến nhất của Perl trên Internet là xử lý mẫu nhập vào, bởi vì hầu hết đó là văn bản 2.6.2 Lập trình Socket Perl có khả năng tới đọc/ghi các TCP/IP socket. Chẳng hạn, Perl có thể dùng để viết một chương trình tự động kiểm tra địa chỉ IP để xác minh tính hợp lệ của 1 trang Web. Điều này đặc biệt hữu ích trong việc cập nhật các trang Web 2.6.3 Xử lý email Các chương trình Perl được sử dụng để lọc email dựa vào địa chỉ hoặc nội dung, tự động sắp xếp danh sách email(mailling lists). Một trong số web mail nổi tiếng nhất là http://www.hotmail.com với hầu hết các trang có dạng *.cgi 6 | P a g e 2.7 Perl có những tiện ích hỗ trợ việc gỡ lỗi Trình thông dịch Perl có sẵn một trình gỡ rối, có thể giúp giảm bớt thời gian dùng đến gỡ lỗi những ứng dụng. Trình gỡ rối đ- ược kích hoạt thường xuyên nhờ sử dụng tùy chọn - d khi biên dịch. Ngoài ra, - w cung cấp một tập hợp đầy đủ những cảnh báo 2.8 Perl là một ngôn ngữ lập trình mã nguồn mở Perl được phân phối theo phép công cộng GNU Vì thế ta sẽ được nhiều sự hỗ trợ . Chẳng hạn có thể liên hệ trực tiếp với Larry hoặc nhóm hỗ trợ Perl trực tuyến toàn thế giới, liên lạc thông qua nhóm tin Usenet comp.lang.perl. hoặc gửi yêu cầu tới perl-users-request@virgina.edu 3. Cấu trúc cơ bản của 1 chương trình Perl Ta hãy nhìn vào một chương trình rất đơn giản nhưng thể hiện được những yếu tố căn bản nhất của Perl. Đó là chương trình “Hello.pl”: 7 | P a g e Dòng đầu tiên là giống như một câu nói rằng đây là chương trình Perl. Nó cũng là lời chú thích cho Perl. Bởi vì chú thích của Perl giống như chú thích của Shell. Bất kì cái gì nằm giữa một dấu thăng (#) tới cuối dòng đều là một chú thích. Không có khái niệm về chú thích trên nhiều dòng như C. Dòng thứ hai là toàn bộ phần thực hiện được của chương trình này. Tại đây chúng ta thấy câu lệnh print. Từ khoá print bắt đầu chương trình, và nó có một đối, một xâu văn bản kiểu như C. Bên trong xâu này, tổ hợp kí tự \n biểu thị cho kí tự dòng mới; hệt như trong C. Câu lệnh print được kết thúc bởi dấu chấm phẩy (;). Giống như C, tất cả các câu lệnh đơn giản đều kết thúc bằng chấm phẩy * . Nhưng chương trình Perl bao gồm tất cả các câu lệnh perl về tệp được lấy tổ hợp chung như một trình lớn cần thực hiện. Không có khái niệm về trình “chính” main như trong C.(điều này giống như trong Shell) Khi gọi chương trình này, phần lõi sẽ gọi bộ thông dịch Perl, phân tích câu toàn bộ chương trình (hai dòng, kể cả dòng chú * 8 | P a g e thích đầu tiên) và rồi thực hiện dạng đã dịch. Thao tác đầu tiên và duy nhất là thực hiện toán tử print, điều này gửi đối của nó ra lối ra. Sau khi chương trình đã hoàn tất, thì tiến trình Perl ra, cho lại một mã ra thành công cho lớp vỏ. CHƯƠNG 1: CÚ PHÁP, TẬP LỆNH, CÁC KIỂU DỮ LIỆU Phần 1: Các phần tử cơ bản của ngôn ngữ Perl 1. Tập kí tự 26 chữ cái hoa A, B, C, , Z 26 chữ cái thường a, b, c, , z 10 chữ số 0, 1, , 9 các kí hiệu toán học + - * / = 9 | P a g e các dấu ngăn cách . , : ; dấu cách các kí tự khác _ ? < > [ ] { } ~ ! @ # $ % ^ & * ( ) Các kí hiệu khác có thể dùng tong xâu hoặc trong chú thích 2. Từ khoá Dưới đây liệt kê một số từ khoá thông dụng của Perl : if else elsif while next sub print printfdo select whileuntil for foreach unless die sort my binmode 3. Tên (định danh – identifier) Tên là một khái niệm rất quan trọng, nó dùng để xác định các đại lượng khác nhau trong một chương trình. Chúng ta có tên hằng, tên biến, tên mảng, tên hàm, tên tệp, tên cấu trúc, tên nhãn, Tên trong Perl được đặt theo quy tắc sau : là một dãy các kí tự liền nhau gồm các chữ cái và số và dấu gạch 10 | P a g e [...]... sai vì sử dụng dấu cách if sai vì trùng với từ khoá Tuy nhiên có hai kiểu tên đặc biệt trong Perl gắn liên với hai kiểu dữ liệu là biến vô hướng và mảng Tên biến vô hướng được bắt đầu bằng $ Tên mảng được bắt đầu bằng @ Chú ý :Tên trong Perl có độ dài tuỳ ý và có phân biệt chữ hoa với chữ thường Vì vậy tên là Pi sẽ khác tên là PI và pI 11 | P a g e 4.Cách ghi lời giải thích Khi lập trình cần... 5.Câu lệnh và dấu chấm câu Một chương trình gồm nhiều câu lệnh, mỗi câu lệnh thực hiện một công việc nào đó Các câu lệnh phải được ngăn cách nhau bởi dấu ; 6.Một số chương trình đơn giản viết bằng Perl 12 | P a g e Ví dụ 1: In ra màn hình dòng chữ Learning Perl is very good #!/usr/bin /perl print “Learning Perl is very good”; Ví dụ 2:In ra lời chào #!/usr/bin /perl print “Ban ten la gi ?”; $a=;... làm cho chương trình dễ đọc, dễ hiểu hơn mà không gây ảnh hưởng đến sự làm việc của chương trình Các lời giải thích trong Perl được bắt đầu bằng kí tự # và tất cả những gì nằm sau # cho đến cuối dòng đều là lời giải thích.Mọi thứ đằng sau # khi dịch chương trình sẽ bị bỏ qua: ví dụ: $a=; #Nhap vao gia tri a print "So cua nhap va la : $a\n"; # In so vua nhap ra man hinh 5.Câu lệnh và dấu chấm câu... 1.1 Biến và hằng Dữ liệu chứa trong máy tính có thể là biến hoặc hằng : 13 | P a g e Biến là đại lượng có thể thay đổi được giá trị Hằng là đại lượng có giá trị không thay đổi 1.1.1 Hằng kí hiệu Hằng kí hiệu là cách thức biểu diễn dữ liệu trong mã chương gốc của chương trình như cái vào cho trình biên dịch Perl Hằng kí hiệu động :giống như hằng dấu phẩy động trong C Ví dụ : 1.25 # một và 1/4 7.25e45... dụ : 12 15 -2004 3485 Không nên ứng đầu bắng chữ số 0 bởi vì trong Perl hỗ trợ cho hằng hệ cơ số tám và hệ cơ số mười đều được bắt đầu bằng chữ số 0 Ví dụ : 0377 # 377 hệ tỏm = 255 trong hệ thập phõn -0xff # õm FF hệ mười = -255 trong hệ thập phõn 1.2 Kiểu số nguyên Kiểu nguyên trong Perl được lưu trữ trong máy dưới dạng số thực dấu chấm động Do đó kiểu nguyên trong Perl có dải giá trị rất lớn, bằng... hay đổ chuông (bell) \xff biểu diễn kí tự thứ 255 hay EOF 1.4.2 Xâu nháy đơn Perl cũng cho phép bạn sử dụng xâu trong hai dấu nháy đơn ví dụ : 20 | P a g e ‘day la xau nhay don’ Khác với xâu nháy kép, xâu nháy đơn có thể được đặt trên nhiều dòng và các kí tự điều khiển sẽ không có tác dụng ngoại trừ hai trường hợp dấu ‘ và dấu \ Ví dụ : Xâu nháy đơn Xâu nháy kép ‘ho ten nguyen van a’ “ho ten\nnguyen... giữa các phép toán và các toán hạng cùng các dấu ngoặc đơn để diễn đạt một công thức toán học nào đó 24 | P a g e Toán hạng là một đại lượng nào đó, có thể là hằng, biến hay hàm Các phép toán được dùng trong ngôn ngữ Perl a Số học + - * / %(lấy phần dư) **(mũ) Ví dụ 5 % 3 = 2 10.3 % 3.4 = 1 ( số thực sẽ được chuyển thành số nguyên trước khi thực hiện phép toán) 2**3 = 8 Chú ý : Perl không phép nâng... 9.01e+21 + 0.01 - 9.01e+21 Sẽ cho ta giá trị 0 bởi vì trong quá trình cộng 9.01e+21 + 0.01 máy bỏ bớt một số chữ số đi nên kết quả nhận được là 9.01e+21 Cách biểu diễn hằng thực cũng như trong C dạng bình thường và dạng có phần số mũ 1.23 4.56e-10 1.4 Kiểu xâu Xâu là một dãy các kí tự.Mỗi kí tự đều là một giá trị 8 bit Có hai loại xâu trong Perl : 1.4.1 Xâu nháy kép 17 | P a g e Là một dãy các kí... giá trị là xâu kí tự được thêm dấu \ vào trước những kí tự không phải là từ trong xâu st join(joinstr, list) trả lại giá trị là một xâu được ghép nối bởi các phần tử trong danh sách list và giữa hai phần tử trong xâu ghép nối là xâu joinstr @list = ("Day", "la", "vi", "du."); $str = join (" ", @list); #Lệnh gán này cho $str = “Day la vi du.” II Biến, biểu thức và lệnh gán 1 Biến 23 | P a g e Biến... sang dòng mới \r Về đầu dòng \t Tab \u Chuyển kí tự tiếp theo thành chữ hoa Tất cả các kí tự tiếp theo chuyên thành \U chữ hoa \007 Kí tự ASCII ở hệ 8 (007 = bíp) \” Kí tự “ \\ Kí tự \ \v Nhẩy cách ứng Ví dụ : Chúng ta muốn có xâu có dấu ngoặc kép bên trong thĩ xâu đầy đủ là “ dau \” ngoac kep\” ” “ chu \U hoa ” -> chuyển xâu thành “ chu HOA ” 19 | P a g e Ngoài ra bạn cũng có thể sử dụng cách viết . CHƯƠNG 1: VÀI NÉT VỀ NGÔN NGỮ LẬP TRÌNH PERL 1.Lịch sử của Perl Ngày 18/10/1987 Larry Wall tác giả của ngôn ngữ này lần đầu tiên đưa Perl vào sử dụng tại nhóm usenet comp.sources . Ngôn ngữ này. thể ngắn gọn và đơn giản hơn. 2.3 Perl có cú pháp giống C và Shell và có thể tích hợp với C Perl và C đều là những ngôn ngữ lập trình phổ biến. Mỗi ngôn ngữ có những điểm mạnh và điểm yếu riêng một ngôn ngữ lập trình hệ thống khá mạnh trong Unix 5 | P a g e 2.6 Perl là một ngôn ngữ rất thích hợp với CGI và Socket 2.6.1 Các CGI script Perl là một trong những ngôn ngữ thông dụng nhất