Bắt đầu nhanh trong Perl. Học Perl

Được biết đến với cái tên “Cuốn sách Lạt ma”, cuốn sách giáo khoa này, được xuất bản lần đầu vào năm 1993, hiện đã có phiên bản thứ năm, mô tả những thay đổi cuối cùng bằng ngôn ngữ lên tới Perl 5.10.

Phiên bản thứ năm bao gồm các chủ đề như kiểu dữ liệu Perl và các biến, chức năng tùy chỉnh, thao tác với tập tin, biểu thức chính quy, thao tác chuỗi, danh sách và sắp xếp, quản lý quy trình, so sánh thông minh, mô-đun nhà phát triển bên thứ ba và những người khác.

Perl là ngôn ngữ dành cho những ai muốn hoàn thành công việc của mình một cách nhanh chóng và hiệu quả. Sau khi được tạo ra như một công cụ xử lý văn bản phức tạp, dành cho quản trị viên hệ thống, Perl hiện là ngôn ngữ lập trình đầy đủ tính năng phù hợp để giải quyết hầu hết mọi vấn đề trên hầu hết mọi nền tảng - từ ngắn gọn tiện ích từ dòng lệnh đến các tác vụ lập trình web, nghiên cứu tin sinh học, tính toán tài chính và hơn thế nữa.

Một số sách dạy bạn cách lập trình trong Perl, trong khi Học Perl sẽ giúp bạn trở thành lập trình viên Perl.

Đánh giá của độc giả

"Nói chung, tôi rất kén chọn về chất lượng sách giáo khoa, tôi thường chửi rủa họ. Nhưng cuốn sách này đơn giản là rất xuất sắc. Một cuốn sách giáo khoa xuất sắc, dành cho cả những người mới bắt đầu lập trình và những lập trình viên có kinh nghiệm chưa quen với Perl. Tôi đánh giá cuốn sách này thậm chí còn cao hơn cả “cuốn sách của Lama đó,” bởi vì viết ngắn gọn và đơn giản là điều đặc biệt khó khăn.”

Khách truy cập trang web ozon.ru

"Khoảng 5 năm trước, tôi đã mua ấn bản trước của cuốn sách này và bắt đầu lập trình Perl. Kể từ đó nó đã trở thành nghề nghiệp và sở thích yêu thích của tôi :) Khi mọi người hỏi tôi cách học Perl, tôi giới thiệu cuốn sách này."

Randal L. Schwartz là một chuyên gia lập trình có thâm niên 20 năm. Là chuyên gia trong lĩnh vực kiến ​​trúc phần mềm, quản trị hệ thống, bảo mật, biên soạn tài liệu kỹ thuật và Đào tạo. Randal đã đóng góp cho một số cuốn sách nổi tiếng: Lập trình Perl, Học Perl, Học Perl cho Hệ thống Win32 và Học Perl hiệu quả, đồng thời là cộng tác viên thường xuyên cho WebTechniques, Máy tính hiệu suất và SysAdmin " và "Tạp chí Linux". Thường xuyên tham gia vào các nhóm tin Perl và kiểm duyệt nhóm comp.lang.perl.announce kể từ khi thành lập. Sự hài hước lấp lánh và năng lực kỹ thuật của anh ấy là những thứ huyền thoại (một số trong đó có lẽ anh ấy đã tự nghĩ ra). Mong muốn đóng góp cho cộng đồng Perl của Randal đã truyền cảm hứng cho anh thành lập và tài trợ cho "Viện Perl". Randal cũng là thành viên sáng lập và thành viên hội đồng quản trị của Perl Mongers (perl.org), một phong trào cơ sở trên toàn thế giới nhằm truyền bá Perl. Từ năm 1985, Randal đã sở hữu và điều hành Stonenenge Consulting Services, Inc. Anh ấy có thể liên lạc tại [email được bảo vệ]; anh ấy háo hức nói về Perl và các chủ đề liên quan khác.

Tom Phoenix đã làm việc trong lĩnh vực giáo dục từ năm 1982. Sau 13 năm giải phẫu, nghiên cứu các vụ nổ, làm việc với các động vật thú vị và phóng điện cao thế trong bảo tàng khoa học, ông bắt đầu giảng dạy các lớp Perl tại Dịch vụ Tư vấn Stonehenge, nơi ông đã làm việc từ năm 1996. Kể từ đó ông đã đến thăm nhiều địa điểm thú vị, vì vậy rất có thể bạn sẽ sớm gặp anh ấy tại cuộc họp Perl Mongers. TRONG thời gian rảnh trả lời các câu hỏi trong nhóm Usenet comp.lang.perl.misc và comp.lang.perl.moderated, đồng thời cũng góp phần phát triển Perl. Ngoài việc lập trình bằng Perl, giao tiếp với các hacker Perl và những thứ khác, Tom còn quan tâm đến mật mã nghiệp dư và nói được Esperanto. Sống ở Portland, Oregon.

Brian D. Foy - đã làm giảng viên tại Dịch vụ Tư vấn Stonehenge từ năm 1998; đã làm việc về Perl kể từ khi tốt nghiệp ngành vật lý, rất chăm chỉ người dùng Mac kể từ khi xuất hiện chiếc máy tính đầu tiên của tôi. Thành lập nhóm người dùng Perl đầu tiên (New York Perl Mongers) và cũng tổ chức phi lợi nhuận Perl Mongers, Inc., đã giúp thành lập hơn 200 nhóm người dùng Perl trên khắp thế giới. Duy trì phần perlfaq của tài liệu Perl chính, một số mô-đun từ CPAN và một số tập lệnh độc lập. Ông xuất bản The Perl Review, một tạp chí dành riêng cho Perl, và là diễn giả thường xuyên tại các hội nghị. Bài viết của ông về Perl xuất hiện trên O\"Reilly Network, "The Perl Journal", "Dr. Dobbs" và "The Perl Review", trong nhóm use.perl.org và trong một số nhóm Usenet dành riêng cho Perl.

Vấn đề khi dạy Perl như ngôn ngữ lập trình đầu tiên là học sinh không thể đánh giá cao nó cho đến khi họ bắt đầu học ngôn ngữ thứ hai. Vấn đề khi dạy Perl như ngôn ngữ thứ hai là không có ngôn ngữ lập trình nào, nếu xét riêng lẻ, lại không phù hợp với vai trò của một ngôn ngữ lập trình. người tiền nhiệm.
-- Tường Larry

Khi mọi người nói rằng Perl giỏi trong việc "gắn kết" các chương trình khác lại với nhau, điều họ thực sự muốn nói là Perl rất giỏi trong việc dọn dẹp sau khi các chương trình khác mắc lỗi.
-- từ Mark-Jason Dominus trong comp.lang.perl.misc

Ôn tập

Trong bài viết tháng này, chúng ta sẽ xem xét các câu lệnh điều kiện và vòng lặp được sử dụng trong Perl và xem xét một số tập lệnh sử dụng chúng. Chúng ta cũng sẽ xem xét cách các toán tử này hoạt động với các biến Perl và xem nhanh cách xử lý thông tin đầu vào của người dùng. Khi bạn bắt đầu hiểu phần này, tôi khuyên bạn nên hack một vài tập lệnh mẫu và thử nghiệm chúng một cách kỹ lưỡng. Rõ ràng là bạn sẽ mắc sai lầm, nhưng kể từ thời điểm này, bạn thực sự cần phải bổ sung cho việc đọc của mình những bước độc lập đầu tiên, ngay cả khi bạn có bị tấn công và đắm mình trong bùn đến mức mãn nguyện. Ai không chơi thì không uống sâm panh...

Câu điều kiện

Dưới đây là các câu lệnh điều kiện được sử dụng trong Perl; Nếu bạn đã quen với các câu lệnh điều kiện trong các ngôn ngữ khác, bạn sẽ không thấy điều gì bất thường. Perl kiểm tra tính đúng hay sai của một điều kiện và dựa trên việc kiểm tra này, chuyển quyền kiểm soát sang nhánh này hoặc nhánh khác.

Nếu (đèn giao thông_is_red) ( # Nếu đèn giao thông màu đỏ thì
dừng lại; # Hành động 1 -- dừng lại
}
elsif (traffic_light_is_ yellow) ( # Nếu nó màu vàng thì
Đánh vào khí; # Hành động 2 - tăng ga
}
khác(
# Trong tất cả các trường hợp khác
tiến hành thận trọng; # Hành động 3 - tiến về phía trước một cách cẩn thận
}

Xin lưu ý rằng toán tử "elseif" là tùy chọn, giống như "else". Cũng lưu ý rằng "khác" đóng vai trò như một cái bẫy cho "tất cả các lựa chọn khác": nếu màu của đèn giao thông không phải là vàng hoặc đỏ - cho dù nó bị cháy, bị tông trong một vụ tai nạn hay bất cứ điều gì - chúng ta "tiến về phía trước một cách cẩn thận". ."

Không giống như C, ngay cả một câu lệnh cũng phải được định dạng dưới dạng một khối (được đặt trong dấu ngoặc nhọn):

if ($tomato eq "red") print "Ripe.\n"; # SAI!
if ($tomato eq "red") ( print "Ripe.\n"; ) # Đúng

trừ khi ($blarg == $foo) ( # Nếu điều kiện 1 không đúng
print "Không bằng!.\n"; # Hành động 1
}
khác ( # Ngược lại
print "Chúng bằng nhau.\n"; # Hành động 2
}

Khá rõ ràng. Sẽ rất hữu ích khi coi "trừ khi" là một câu lệnh "nếu không" có điều kiện. Tôi nhắc lại, "khác" không phải là phần bắt buộc của câu lệnh. Không, không có thứ gọi là "không có điều kiện".

Chu kỳ

Ồ, những chu kỳ tuyệt vời. Đây là những thứ khiến hành động chạy bao nhiêu lần tùy thích, tùy thuộc vào điều kiện bạn đặt. Bạn thậm chí có thể nói rằng chu kỳ là lý do chính tại sao máy tính được sử dụng với vai trò chính của chúng: các công cụ để thực hiện lặp đi lặp lại cùng một công việc một cách chính xác. Dưới đây là ba loại câu lệnh vòng lặp phổ biến nhất trong Perl:

While ($cat eq "walks") ( # Miễn là điều kiện 1 đúng
print "Những con chuột đang chơi đùa.\n"; # Thực hiện hành động 1
}

Cho đến ($time > 1159) ( # Cho đến khi điều kiện 1 được đáp ứng
print "Trời vẫn còn sáng.\n" # Thực hiện hành động 1
}

Vòng lặp "for" được thực hiện bởi hai những cách khác. Câu lệnh đầu tiên giống như câu lệnh "for" trong C:

với ($n = 99; $n > 0; $n--) (
print “$n chai bia liên tiếp, $n chai bia,”;
...
}

Trong trường hợp này, chúng ta đặt giá trị ban đầu $n (99), giảm giá trị này đi một mỗi lần vòng lặp đi qua và kiểm tra xem nó có lớn hơn 0 hay không. Nếu không, chúng ta thoát khỏi vòng lặp.

Phương pháp thứ hai, gợi nhớ đến toán tử "foreach" trong Clipper, FoxPro và các phương pháp khác ngôn ngữ tương tự, xảy ra thường xuyên hơn nhiều:

giảng dạy $n (0..1000) (
print "Ngày $n trên đảo hoang. Đến giờ này tôi đã ăn rồi ";
print $n * 100, "chuối. Tôi hy vọng họ sẽ sớm cứu tôi.\n";
...
}

Điều tương tự có thể được thực hiện như thế này:

cho (0..1000) (
print "Một ngày $_ trên đảo hoang. Đến lúc này tôi đã ăn xong rồi ";
print $_ * 100," chuối. Tôi hy vọng họ sẽ sớm cứu tôi.\n";
...
}

Ghi chú của người dịch: Việc sửa đổi chương trình để từ "chuối" xuất hiện đúng kiểu được dành cho người đọc như một bài tập độc lập. :)

Người bạn cũ của chúng tôi "$_" (đã giải thích ở bài viết trước) Thực sự tiện lợi. Lưu ý rằng "foreach" chỉ là một dạng khác của "for" và những dạng này có thể được sử dụng thay cho dạng kia.

Tất cả các toán tử điều kiện và toán tử vòng lặp được mô tả ở trên cũng có thể được sử dụng làm công cụ sửa đổi cho các biểu thức riêng lẻ:

print "Đây là chuỗi $_ của 50.\n" for (1..50);

Đoạn mã trên sẽ in ra 50 dòng, được đánh số một cách rõ ràng.

in "Tìm thấy nó!" nếu /Waldo/;

Và chuỗi này sẽ in chuỗi “Đã tìm thấy!” nếu bộ đệm mặc định ($_) chứa kết quả khớp với mẫu “Waldo”.

Điều thú vị là nó diễn ra tốt đẹp theo chu kỳ và câu điều kiện Thực tế là trong Perl, các biến trống trả về giá trị "null", được hiểu là "false". Điều này hoàn hảo để xác định các biến như thế này:

in nếu $_; # In $_ nếu có gì ở đó

Ví dụ sau cho thấy giá trị null cũng được coi là sai:

In "5280 -- true.\n" nếu 5280; # Việc rút tiền sẽ diễn ra. in "0 là đúng.\n" if 0; # Việc rút tiền sẽ không diễn ra.

Đây là một ví dụ sử dụng danh sách:

trong khi một) (
in pop @a; # "Chọn" giá trị cuối cùng từ @a và in nó
$count = @a; # Lấy số phần tử trong @a
print $count, "các phần tử còn lại trong \@a.\n";
}

Khi phần tử cuối cùng bị loại bỏ, chu trình kết thúc.

trừ khi (%hash) (
%hash = ("đầu tiên" => "Joe hùng mạnh",
"cuối cùng" => "Trẻ",
"loại" => "khỉ đột",
"từ" => "Núi Pangani",
"sinh" => "1949",
“Mẹ” => “Jill”,
"Bố" => "Gregg"
);
}

Nếu "%hash" trống, hãy điền vào đó các giá trị ban đầu.

Toán tử phạm vi mà chúng ta đã sử dụng một vài lần là một điều rất hữu ích: nó cho phép chúng ta chỉ định một phạm vi số hoặc ký tự. Xin lưu ý rằng các phạm vi phải thuộc một "loại" nhất định - nếu bạn chỉ định ("a".."Z") hoặc ("A".."z"), kết quả sẽ không như bạn mong đợi. Chưa hết, bạn không thể chỉ định một phạm vi ("z".."a"), toán tử như vậy cũng sẽ không hoạt động. Tuy nhiên, có một cách đơn giản để làm điều tương tự:

foreach $letter (đảo ngược "a".."z") (
in "$thư\n";
}

Nhưng “danh sách chữ cái” sẽ được hình thành chính xác:

cho ("aa".."zz") (
in "$_"; # In ra "aa ab ac ... zx zy zz"
}

Đầu vào của người dùng

Biên lai đầu vào bàn phím và thực tế là dữ liệu từ STDIN - ví dụ: các chuỗi được chuyển tiếp tới tập lệnh của chúng tôi dưới dạng đầu vào trong một cấu trúc như sau

tập tin mèo | perl_script

Thật đơn giản; Đây chính xác là lý do tại sao toán tử "kim cương" của Perl được tạo ra.

trong khi (<>) ( # Ghi lại tất cả đầu vào bàn phím hoặc đầu vào được chuyển hướng
in; # Sẽ in từng dòng đã nhập cho đến khi hết
}

Đoạn mã trên sẽ hoạt động chính xác như lệnh "cat" - nó sẽ in tất cả dữ liệu đầu vào được gửi tới nó, in nội dung của tệp được truyền dưới dạng đối số cho thiết bị đầu cuối và chấp nhận (và lặp lại trên màn hình) dữ liệu đầu vào của người dùng cho đến khi Ctrl được nhấn. -D hoặc Ctrl-C. Điều tương tự có thể được viết như thế này:

in trong khi<>;

để có vẻ ngoài lung linh hơn. Lưu ý rằng "<>" Và tương tự nhưng không tương đương:

in trong khi ;

sẽ phản hồi với bàn phím và đầu vào được chuyển hướng, nhưng sẽ không xuất ra nội dung của tệp được truyền dưới dạng đối số. Tôi chưa bao giờ gặp phải tình huống yêu cầu hành vi này nên tôi chỉ sử dụng "<>".

$câu trả lời =<>; # Nhận dữ liệu đầu vào và lưu nó vào một biến
nếu ($câu trả lời eq "y") (
in "Có\n";
}
elsif ($câu trả lời eq "n") (
in "Không\n";
}
khác(
print "Hiểu lầm!\n";
}

Tập lệnh này sẽ luôn hiển thị "Không có ý kiến!" Ừm... nhưng nhìn thì điều này đúng, vấn đề là gì?

Vấn đề là Perl đọc mọi thứ bạn gõ. Vậy bạn nhấn phím gì sau chữ "y"? "Đi vào"! Vì vậy biến $answer KHÔNG chứa "y", mà là "y\n" - câu trả lời và ký tự nguồn cấp dòng! Vậy chúng ta nên làm gì? Ồ, tất nhiên Perl có một chức năng Luôn luôn nên được sử dụng khi nhận đầu vào của người dùng:

nhai ($câu trả lời =<>);

"chomp" sẽ xóa ký tự dòng mới(hoặc ký tự "cuối dòng") từ chuỗi ký tự mà bạn đã áp dụng nó. Nó cũng sẽ xóa tất cả EOL khỏi mảng chuỗi được đưa ra làm đối số. Chức năng cũ"Chop" của Perl 4 đã loại bỏ ký tự cuối cùng khỏi phần tử vô hướng (hoặc phần tử mảng) thu được, bất kể ký tự đó là gì. Hàm này vẫn có sẵn trong trường hợp bạn cần, nhưng để xử lý thông tin đầu vào của người dùng, tốt hơn nên sử dụng hàm "chomp" (được gọi là "safe chop" trong các thông báo lỗi Perl).

Bài tập cho trí óc

Để tự học và giải trí, hãy thử viết một vài kịch bản:

Một tập lệnh lấy một số làm đầu vào và in "Xin chào!" số lần tương ứng. Ngoài ra, bạn có thể kiểm tra ký tự đầu vào của mình xem có ký tự không hợp lệ (không phải số) không (gợi ý: sử dụng toán tử tìm kiếm mẫu //).

Một đoạn script nhận được câu trả lời cho câu hỏi “Mấy giờ rồi?” (dưới dạng số từ 0 đến 23) xuất ra đầu ra tiêu chuẩn, ví dụ: “Chào buổi sáng”, “Dobriy den”, “Guten Abend” hoặc “Buenas noches”.

Nếu bạn nghĩ ra điều gì đó đặc biệt thông minh, đừng ngần ngại gửi nó cho tôi trong bài viết tiếp theo - bạn sẽ nhận được tín dụng, một, tôi sẽ sẵn lòng mổ xẻ tác phẩm của bạn, đó là hai, và cuối cùng, cả hai chúng ta đều sẽ đạt được phổ biến rộng rãi trong phạm vi hẹp và kết quả là chúng tôi sẽ có đủ khả năng để định cư ở Belize sau khi nghỉ hưu.

Đừng quên: "dòng shebang" của bạn phải luôn chứa "-w". Nếu bạn không nhờ Perl giúp đỡ khi xảy ra lỗi, bạn sẽ lãng phí rất nhiều thời gian. Hãy để máy tính hoạt động!

#!/usr/bin/Perl -w
in "Hẹn gặp lại!"

Ben Comfrey
perl -we"in tách ngược//,"rekcah lreP rehtona tsuJ""
Liên kết:

Các trang Perl man về chủ đề này (có sẵn trên mọi hệ thống được cấu hình pro-Perl-y :)

perl - tổng quan về perlfaq - Câu hỏi thường gặp về Perl
perltoc - doc TOC perldata - cấu trúc dữ liệu
perlsyn - cú pháp perlop - toán tử/độ ưu tiên
perlrun - thực thi perlfunc - hàm dựng sẵn
perltrap - bẫy dành cho người thiếu thận trọng perlstyle - hướng dẫn về phong cách

"perldoc", "perldoc -q" và "perldoc -f"

Nếu chương trình hoạt động bình thường khi được gọi từ dòng lệnh, bạn cần cài đặt nó trên máy chủ. Các vị trí được chấp nhận tùy thuộc vào máy chủ, mặc dù thư mục thường được sử dụng cho các tập lệnh CGI

/usr/etc/httpd/cgi-bin/ và các thư mục con của nó. Hãy thảo luận vấn đề này với Quản trị viên web hoặc quản trị viên hệ thống của bạn.

Khi chương trình của bạn được cài đặt trong thư mục CGI, bạn có thể chạy nó bằng cách trỏ trình duyệt tới tên đường dẫn của nó như một phần của

URL. Ví dụ: nếu chương trình của bạn được gọi xin chào, URL sẽ trông như thế này:

http://vww.SOMEWHERE.org/cgi-bin/howdy.

Máy chủ thường cho phép bạn sử dụng bí danh thay vì tên đường dẫn chung. Máy chủ có địa chỉ

www.SOMEWHERE.org, có thể dễ dàng dịch cgi-bin/xin chào, chứa trong này URL tới một cái gì đó như usr/etc/httpd/ cgi-bin/xin chào.Quản trị viên hệ thống hoặc Quản trị viên web của bạn có thể cho bạn biết nên sử dụng bí danh nào khi truy cập chương trình của bạn.Tiêu đề này là cần thiết cho giao thức HTTP, mà chúng tôi đã đề cập ở trên.

Truyền tham số qua

CGI

Để truyền tham số cho các chương trình CGI (chính xác hơn là cho hầu hết các chương trình CGI), không cần biểu mẫu nào. Để xác minh điều này, hãy thay thế

URL tới http://www.SOMEWHERE.org/cgi-bin/ice_creain?flavor=mint.

Khi bạn "nhắm" trình duyệt của mình vào lúc này

địa chỉ, trình duyệt không chỉ yêu cầu máy chủ Web gọi chương trình kem, nhưng cũng truyền chuỗi vào đó hương vị = bạc hà. Bây giờ đến phần chương trình - đọc chuỗi đối số đã cho và phân tích nó. Nhiệm vụ này không đơn giản như nó có vẻ. Nhiều chương trình cố gắng tự giải quyết nó và phân tích cú pháp truy vấn, nhưng hầu hết các thuật toán “tự chế” đôi khi đều thất bại. Xem xét việc tìm thấy nó khó đến thế nào giải pháp đúng một nhiệm vụ như vậy cho tất cả mọi người trường hợp có thể, có lẽ bạn không nên tự mình viết mã, đặc biệt khi có những mô-đun dựng sẵn tuyệt vời thực hiện công việc phức tạp này phân tích cú pháp cho bạn.

Dịch vụ của bạn

- Mô-đun CGI.pm, luôn phân tích chính xác yêu cầu CGI đến. Để chèn mô-đun này vào chương trình của bạn, chỉ cần viết

ở đâu đó ở đầu chương trình*.

Nhà điều hành

sử dụng tương tự như toán tử # bao gồm ngôn ngữ Với thực tế là trong quá trình biên dịch, nó trích xuất mã từ một tệp khác. Nhưng nó cũng cho phép các đối số tùy chọn cho biết bạn muốn truy cập những hàm và biến nào từ mô-đun này. Đặt chúng vào danh sách theo tên mô-đun trong câu lệnh sử dụng,- và bạn có thể liên hệ chức năng quy định và các biến như thể chúng là của riêng bạn.

TRONG trong trường hợp này mọi thứ chúng ta cần sử dụng từ mô-đun

CGI.pm là hàm param()**.

Nếu không có đối số nào được chỉ định, hàm

thông số() trả về danh sách tất cả các trường có trong biểu mẫu HTML mà tập lệnh CGI đã cho phản hồi. (Trong ví dụ hiện tại, trường này hương vị và trong trường hợp chung - danh sách tất cả các tên có trong chuỗi tên=giá trị của biểu mẫu được truyền vào.) Nếu một đối số chỉ ra một trường được đưa ra, thì thông số() trả về giá trị (hoặc các giá trị) được liên kết với trường này. Kể từ đây, param("hương vị") trả về "bạc hà", bởi vì cuối cùng Chúng tôi đã chuyển URL ?flavor=mint. Tất cả các tên mô-đun Perl đều có phần mở rộng rt. Hơn nữa, người vận hành sử dụng ngụ ý phần mở rộng này. Bạn có thể tìm hiểu cách tạo mô-đun của riêng mình trong chương này 5 cuốn sách Lập trình Perl hoặc trên trang người đàn ông perlmod(l). Một số mô-đun tự động xuất tất cả các chức năng của chúng, nhưng vì CGI.pm - nó thực sự là một mô-đun đối tượng được ngụy trang dưới dạng mô-đun thông thường, chúng ta phải yêu cầu các chức năng của nó một cách rõ ràng.

Mặc dù thực tế là trong danh sách của chúng tôi dành cho nhà điều hành

sử dụng chỉ có một phần tử, chúng ta sẽ sử dụng ký hiệu qw(). Nhờ vậy, sau này chúng ta sẽ dễ dàng tiết lộ danh sách này hơn.

#!/usr/local/bin/PerlS -w

# chương trình trả lời biểu mẫu về loại kem yêu thích của bạn (phiên bản

1) sử dụng CGI qw(param);

in “END_of_Start;

Loại nội dung: văn bản/html

Chào thế giới

Xin chào các Terran!END_of_Bắt đầu

in "

Hương vị yêu thích của bạn là $favorite. in “Tất cả_Xong;

Tất cả đã được làm xong

Cách giảm số lượng văn bản bạn gõ

Bạn vẫn phải nhập rất nhiều, nhưng

CGI.pm có nhiều chức năng tiện lợi, đơn giản hóa tập hợp. Mỗi hàm này trả về Chuỗi giá trị, mà bạn sẽ xuất ra. Ví dụ, tiêu đề() trả về một giá trị chuỗi chứa chuỗi Loại nội dung theo dõi bởi dòng trống, bắt đầu_html( đường kẻ) trả về chuỗi đã chỉ định dưới dạng tiêu đề HTML ( tên tài liệu), CHÀO (chuỗi) trả về chuỗi đã chỉ định làm tiêu đề HTML cấp đầu tiên và p (string) trả về chuỗi đã chỉ định dưới dạng đoạn HTML mới.

Chúng ta có thể liệt kê tất cả các hàm này trong một danh sách kèm theo câu lệnh

sử dụng nhưng danh sách như vậy sẽ tăng lên đến mức chưa từng có. TRONG CGI.pm, như trong nhiều mô-đun khác, có cái gọi là chỉ thị nhập khẩu - nhãn cho biết các nhóm chức năng được nhập vào. Bạn chỉ cần đặt các lệnh mong muốn (mỗi lệnh bắt đầu bằng dấu hai chấm) ở đầu danh sách nhập của bạn. Trong mô-đun CGI.pm Có các chỉ thị sau:

Nhập tất cả các phương thức xử lý đối số, ví dụ:

thông số().

Nhập tất cả các phương thức để tạo biểu mẫu có thể điền, ví dụ:

trương Văn bản().

Nhập tất cả các phương thức tạo phần tử tiêu chuẩn

HTML 2.0.

Nhập tất cả các phương thức tạo phần tử được đề xuất trong

HTML 3.0 (chẳng hạn như , ).

Nhập tất cả các phương thức tạo tiện ích mở rộng

HTML dành riêng cho Netscape.

Nhập tất cả các chữ viết tắt được tạo

HTML (tức là "html2" + "html3" + "netscape").

Nhập các tính năng "tiêu chuẩn":

"html2", "biểu mẫu" và "cgi".

Nhập tất cả các phương pháp hiện có. Danh sách đầy đủđược đưa ra trong mô-đun

CGI.pm, nơi biến được xác định% thẻ.

Chúng tôi sẽ chỉ sử dụng chỉ thị

: tiêu chuẩn. (thông tin chi tiết về việc nhập hàm và biến từ các mô-đun được đưa ra trong chương 7 cuốn sách Lập trình Perl và cả trên trang man Nhà xuất khẩu 3))

Đây là giao diện chương trình của chúng tôi với tất cả các chữ viết tắt được sử dụng trong

CGI.pm:

#!/usr/local/bin/PerlS -w

# cgi-bin/ice_cream #

chương trình trả lời một biểu mẫu về một người thân yêu loại kem (phiên bản2) sử dụng CGI qw(:standard);

tiêu đề in();

print start_html("Xin chào thế giới"), hi("Xin chào thế giới");

$favorite = param("hương vị");

print p("Hương vị yêu thích của bạn là $favorite.");

in end_html();

Hãy xem nó dễ dàng hơn bao nhiêu? Bạn không phải lo lắng về việc giải mã dữ liệu biểu mẫu, tiêu đề và văn bản HTML nếu không muốn.

Tạo biểu mẫu

Nếu bạn cảm thấy mệt mỏi với việc nhập các tham số của chương trình vào trình duyệt

- tạo một biểu mẫu có thể điền được. Hầu hết người dùng đã quen với những hình thức như vậy. Các thành phần biểu mẫu chấp nhận đầu vào của người dùng đôi khi được gọi là vật dụng; người ta tin rằng thuật ngữ này thuận tiện hơn nhiều so với “thiết bị đầu vào đồ họa". Các thành phần biểu mẫu như vậy bao gồm một dòng và nhiều dòng Trường văn bản, menu bật lên, danh sách có thể cuộn, các loại khác nhau các nút và hộp kiểm.

Tạo trang HTML sau bao gồm một biểu mẫu có một thành phần hộp văn bản và nút gửi. Khi người dùng nhấp vào nút gửi*, tập lệnh sẽ được gọi

kem, được chỉ định bởi thuộc tính HOẠT ĐỘNG.