Hướng dẫn Perl

Perl là gì?

Perl là một ngôn ngữ lập trình động, có mục đích chung, được giải thích, cấp cao. Perl là một thuật ngữ viết tắt của “Ngôn ngữ báo cáo và trích xuất thực tế” mặc dù không có từ viết tắt của Perl. Nó được Larry Wall giới thiệu vào năm 1987. Ngôn ngữ Perl được thiết kế đặc biệt để chỉnh sửa văn bản. Nhưng hiện nay, nó được sử dụng rộng rãi cho nhiều mục đích khác nhau bao gồm quản trị hệ thống Linux, lập trình mạng, phát triển web, v.v.

Tổng quan về ngôn ngữ lập trình

Hãy nói một cách đơn giản. Mặc dù máy tính chỉ hiểu 0 và 1 (ngôn ngữ nhị phân/ngôn ngữ máy/[ngôn ngữ cấp thấp]), nhưng con người chúng ta rất khó lập trình bằng ngôn ngữ nhị phân. Perl là ngôn ngữ lập trình sử dụng các yếu tố ngôn ngữ tự nhiên, các từ được sử dụng trong ngôn ngữ tiếng Anh thông dụng và do đó con người dễ hiểu hơn [ngôn ngữ cấp cao]. Bây giờ có một vấn đề; máy tính không thể hiểu được ngôn ngữ cấp cao mà con người chúng ta có thể dễ dàng hiểu được. Để làm được điều đó, chúng ta cần thứ gì đó có thể dịch ngôn ngữ cấp cao sang ngôn ngữ cấp thấp. Ở đây thông dịch viên đến để giúp đỡ chúng tôi. Trình thông dịch là một phần mềm chuyển đổi chương trình được viết bằng ngôn ngữ cấp cao sang ngôn ngữ cấp thấp để máy tính hiểu và thực hiện các hướng dẫn được viết trong chương trình. Do đó, Perl là một ngôn ngữ lập trình thông dịch.

Perl được sử dụng ở đâu?

Sức mạnh của ngôn ngữ kịch bản Perl có thể được triển khai trong nhiều lĩnh vực. Perl được sử dụng phổ biến nhất trong phát triển Web. Perl cũng được sử dụng để tự động hóa nhiều tác vụ trong máy chủ Web và các công việc quản trị khác, nó có thể tự động tạo email và dọn dẹp hệ thống. Perl vẫn được sử dụng cho mục đích ban đầu của nó, tức là trích xuất dữ liệu và tạo báo cáo. Nó có thể tạo báo cáo về việc sử dụng tài nguyên và kiểm tra các vấn đề bảo mật trong mạng. Do lý do này, Perl đã trở thành một ngôn ngữ phổ biến được sử dụng trong phát triển web, mạng và tin sinh học. Ngoài tất cả những điều này, perl cũng có thể được sử dụng để lập trình CGI.

Perl cũng có thể được sử dụng để tạo và xử lý hình ảnh. Ngoài việc kết nối mạng qua telnet, FTP, v.v., tạo Giao diện người dùng đồ họa, thiết bị điện tử VLSI và tạo bộ lọc thư để giảm các hoạt động gửi thư rác là một số trường hợp sử dụng Perl.

Perl cũng được biết đến với việc triển khai các phương pháp OOP (lập trình hướng đối tượng) và hỗ trợ tất cả các hình thức kế thừa (đơn giản, nhiều & kim cương), đa hình và đóng gói. Perl đủ linh hoạt để hỗ trợ các phương pháp Thủ tục cũng như OOP cùng một lúc. Perl cũng có các mô-đun bổ sung cho phép bạn viết hoặc sử dụng/tái sử dụng mã được viết bằng Python, PHP, PDL, TCL, Quãng tám, Java, NS, C++, Basic, Ruby và Lua trong tập lệnh Perl của bạn. Điều này có nghĩa là bạn có thể kết hợp Perl với những ngôn ngữ lập trình thay vì viết lại mã hiện có.

Ứng dụng của ngôn ngữ lập trình Perl

Ứng dụng của ngôn ngữ lập trình Perl

Tại sao nên sử dụng Perl?

Đúng là có những ngôn ngữ lập trình khác có thể được sử dụng để thực hiện tất cả những việc đã nêu ở trên, vậy tại sao bạn lại đặc biệt nên sử dụng Perl? Perl rất dễ học, đặc biệt nếu bạn có nền tảng về lập trình máy tính. Perl được thiết kế để con người dễ dàng viết và hiểu hơn là làm cho máy tính dễ dàng xử lý. Nó sử dụng các biểu thức thông thường. Phong cách ngôn ngữ tự nhiên của nó khác với các ngôn ngữ lập trình khác sử dụng ngữ pháp và cú pháp cụ thể; do đó, Perl rất linh hoạt và không áp đặt cho bạn bất kỳ cách suy nghĩ cụ thể nào về giải pháp hoặc vấn đề. Perl cực kỳ di động. Nó có thể chạy trên bất kỳ hệ điều hành nào có cài đặt trình thông dịch Perl, do đó nó không phụ thuộc vào nền tảng. Tất cả Linux OperaHệ thống ting được cài đặt sẵn Perl, do đó bạn có thể bắt đầu mã hóa Perl trong Linux ngay khi cài đặt. Điều này không giống như các tập lệnh Shell, trong đó mã thay đổi theo hương vị của bản phân phối Linux đang được sử dụng, khiến nó ngày càng kém di động Các tác vụ nhỏ cụ thể trong Perl trở nên rất dễ dàng và nhanh chóng. Trong suốt hướng dẫn Perl dành cho người mới bắt đầu này, bạn sẽ học cách viết mã các chương trình nhỏ, nhanh chóng cho các tác vụ cụ thể. Hãy lấy một ví dụ đơn giản về chương trình Hello World cổ điển được sử dụng để bắt đầu học bất kỳ ngôn ngữ lập trình nào có UNIX làm gốc:

Ví dụ: Perl xin chào thế giới

Ví dụ đơn giản về Perl

#!/usr/bin/perl
print "Hello, world!";

Đầu ra:

Chào thế giới!

Hai dòng mã trên sẽ in ra Hello, world! Bây giờ không phải là quá đơn giản và nhanh chóng sao? Học sinh có kiến ​​thức về C C++ sẽ biết rằng cần nhiều dòng mã hơn để có được cùng một kết quả trong các ngôn ngữ đó.

Bạn có thể tự hỏi tại sao Perl rất nổi tiếng trên Web. Nó đơn giản vì hầu hết những thứ xảy ra trên web đều là TEXT và Perl xử lý văn bản rất tốt. Nếu chúng ta so sánh Perl với bất kỳ ngôn ngữ nào thì Perl sẽ là ngôn ngữ tốt nhất trong việc xử lý Tệp, xử lý văn bản và báo cáo đầu ra

Một trong những ưu điểm tốt nhất của Perl là nó dùng miễn phí

Cộng đồng Perl tin tưởng mạnh mẽ rằng phần mềm nên có sẵn miễn phí, có thể sửa đổi miễn phí và phân phối tự do. Một số tình nguyện viên từ cộng đồng Perl cố gắng làm cho ngôn ngữ lập trình trở nên tốt nhất có thể.

Ưu điểm và nhược điểm của Perl

Ưu điểm: Nhược điểm:

Ưu điểm của Perl

Nhược điểm của Perl

  • So với các ngôn ngữ lập trình khác Perl mạnh nhất trong việc xử lý văn bản và phân tích cú pháp
  • Đây là ngôn ngữ được thông dịch với thời gian thực thi nhanh vì không cần biên dịch tập lệnh Perl
  • Đơn giản, dễ lập trình và dễ hiểu.
  • Nó là hướng đối tượng.
  • Thư viện CPAN giúp phát triển Perl dễ dàng hơn (chúng ta sẽ tìm hiểu thêm về điều này sau trong chủ đề này).
  • Được sử dụng trong phát triển Web cho hầu hết các Cổng thanh toán.
  • Được sử dụng trong Tự động hóa và để kiểm tra hầu hết nội dung liên quan đến Mạng và Lưu trữ.
  • Có hỗ trợ GUI tối thiểu so với các ngôn ngữ lập trình khác.
  • Bạn cần tham khảo các module thư viện phức tạp không dễ hiểu (Đừng sợ, một khi bạn đã biết cách làm, mọi thứ sẽ trở nên dễ dàng).
  • Để hiểu được các mẫu phức tạp đòi hỏi phải có kinh nghiệm.

Băt đâu nao

Với đủ kiến ​​thức về lịch sử của Perl và các khái niệm cơ bản về lập trình máy tính cần thiết để viết mã trong Perl, đã đến lúc chúng ta bắt đầu tìm hiểu sâu hơn và bắt đầu với Perl. Chương tiếp theo sẽ hướng dẫn bạn cách thiết lập Perl trên hệ thống của mình và sẵn sàng cho hành trình viết mã trong Perl. Hướng dẫn viết kịch bản Perl này sẽ lấy Linux làm hệ điều hành mà học sinh sẽ sử dụng để viết mã trong Perl.

Tải xuống và cài đặt Perl – Windows, Mac & Linux

Làm thế nào để có được Perl?

Tin tốt bạn có thể có nó!

Nhưng nếu bạn không thể tìm thấy nó trên hệ thống của mình, bạn vẫn có thể tải nó miễn phí.

Để tìm hiểu xem bạn đã cài đặt Perl chưa, hãy vào dòng lệnh và gõ: perl -v

Làm thế nào để tải xuống Perl

Lệnh sẽ hiển thị phiên bản Perl nếu nó được cài đặt. Trong trường hợp này, phiên bản là v5.14.2. Nhưng nếu không…đừng hoảng sợ…

UnixHướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ Đã được cài đặt Được cài đặt sẵn Perl mặc dù bạn có thể cần cập nhật lên phiên bản mới nhất.
Mac OS Hướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ Đã được cài đặt OSX được cài đặt sẵn Perl, mặc dù bạn có thể cần cập nhật nó lên phiên bản mới nhất
WindowsHướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ Cần cài đặt Hai lựa chọn có sẵn

  1. Strawberry Perl là một bản phân phối nhị phân mã nguồn mở của Perl dành cho Windows hệ điều hành. Nó bao gồm một trình biên dịch và các mô-đun được cài đặt sẵn cung cấp khả năng cài đặt các mô-đun XS CPAN trực tiếp từ CPAN
  2. ActiveState perl cung cấp bản phân phối nhị phân của Perl (cho nhiều nền tảng), cũng như trình quản lý gói Perl (PPM) của riêng họ

Cập nhật Perl trên Linux:

Nếu bạn cần cập nhật phiên bản Perl thì chỉ cần nhập một dòng lệnh

sudo apt-get cài đặt perl

và giải trí. Phần còn lại sẽ được chăm sóc. Chỉ cần đảm bảo rằng bạn có kết nối internet đang hoạt động.

Cập nhật PERL trên Linux

Cập nhật PERL trên Linux

Cài đặt Perl cho Windows:

Trước tiên, hãy tải xuống Active Perl từ đây liên kết này. Hãy làm theo các bước sau để cài đặt ActivePerl trên Windows hệ thống. Xem ảnh chụp màn hình dưới đây cho cùng.

Bước 1: Khi bạn tải xuống trình cài đặt và bắt đầu cài đặt, bạn sẽ thấy cửa sổ bên dưới, nhấp vào tiếp theo để tiếp tục.

Cách cài đặt Perl trên Windows

Bước 2: Chấp nhận thỏa thuận cấp phép để tiến hành cài đặt.

Cách cài đặt Perl trên Windows

Bước 3: Dưới đây là các gói khác nhau sẽ được cài đặt. Theo mặc định, tất cả sẽ được chọn. Điều khác biệt duy nhất là PPM (Trình quản lý gói Perl). Đây là tiện ích do Active Perl cung cấp để cài đặt các mô-đun hoặc thư viện Perl bên ngoài trong hệ thống của bạn. Bấm vào Tiếp theo để tiếp tục.

Cài đặt Perl trên Windows

Bước 4: Đây là các loại phần mở rộng Perl khác nhau có thể được sử dụng cho Perl. Hầu hết chúng ta sẽ sử dụng .Pl, .Plx và .Pm cho Perl. Các mô-đun Perl về cơ bản sử dụng .Pm làm phần mở rộng tệp của chúng để tham chiếu đến tệp thư viện. Chọn tất cả các tùy chọn và nhấp vào nút Tiếp theo.

Cài đặt Perl trên Windows

Bước 5: Bấm vào nút Install để tiến hành cài đặt.

Cài đặt Perl trên Windows

Bước 6: Sau khi cài đặt, hãy thực hiện lệnh 'Perl –v' để kiểm tra xem Perl đã được cài đặt thành công trong hệ thống của bạn chưa.

Cài đặt PERL trên Windows

Có rất nhiều điều cần được thảo luận để thiết lập môi trường Perl trong cả Linux và Windows, vì sẽ không có nhiều tệp thư viện được đưa vào bản cài đặt này. Bạn cần phải cài đặt chúng theo cách thủ công. Bạn có thể cài đặt thủ công bằng cách sử dụng CPAN (Perl toàn diện Archive Network) hoặc PPM chỉ hoạt động với perl windows. Nhưng những tệp này không bắt buộc phải có để bắt đầu mã hóa trong Perl.

Ngoài thiết lập cửa sổ này bạn có thể sử dụng Windows Tính năng mới của hệ thống con Linux trên Windows trong 10 và sử dụng nó để chạy mã perl

Chương trình Perl đầu tiên

Hello world!

Ví dụ Perl: Xin chào thế giới

#!/usr/bin/perl -w
#this is just a comment…
print "Hello World";

Đừng lo lắng nếu bạn không hiểu văn bản này. Mọi thứ sẽ sớm rõ ràng. Hãy đến và xem xét nó theo dòng:

#!/usr/bin/perl		

Điều này nói với Operating Hệ thống thực thi tệp này bằng chương trình nằm ở /usr/bin/Perl Một số IDE không cần dòng này. Nếu cần thiết, bạn phải viết vào đây đường dẫn đến trình thông dịch của bạn. Nhớ! Dòng đặc biệt này phải ở đầu chương trình của bạn và phải bắt đầu từ #! sử dụng cảnh báo; Đây là một lệnh đặc biệt khác yêu cầu trình thông dịch hiển thị bất kỳ cảnh báo nào, tức là -w để kích hoạt các cảnh báo trên toàn cầu.

print "Hello World";		

Lệnh in ghi văn bản ra màn hình. Dấu chấm phẩy ở cuối dòng cho trình thông dịch Perl biết rằng lệnh đã kết thúc. Bạn phải đặt dấu chấm phẩy ở cuối mỗi lệnh trong mã Perl. Lưu ý dấu ngoặc kép(“). Nó cần thiết cho hướng dẫn in. Lưu đoạn script trên dưới dạng firstprog.pl

On Windows

Nếu bạn đã cài đặt Strawberry, bạn chỉ cần nhấp vào Run. Bạn cũng có thể chạy giao diện dòng lệnh và viết trên bảng điều khiển:

C:\> perl path\firstprog.pl		

hoặc, nếu perl.exe không có trong đường dẫn của bạn:

C:\> c:\perl\bin\perl.exe firstprog.pl		

Trên Linux/Unix

Bạn chỉ cần mở Terminal và viết:

perl firstprog.pl		

Nếu bạn không thể chạy chương trình, hãy đảm bảo bạn có đủ điều kiện để chạy chương trình đó. Nhập vào Terminal:

chmod +x firstprog.pl		

Chương trình của bạn bây giờ đã có thể thực thi được và sẵn sàng chạy. Để thực thi, hãy viết:

./firstprog		

Cài đặt mô-đun trừ cpan

Mô-đun là bộ mã được sử dụng để thực hiện các tác vụ thực hiện các thao tác phổ biến trong một số chương trình. Nếu bạn sử dụng mô-đun Perl, bạn không phải viết lại mã để thực hiện thao tác tương tự. Perl có thể sử dụng các thư viện mã bên ngoài như vậy. Một trong những thư viện tốt nhất là CPAN. Nó là viết tắt của Perl toàn diện Archive Network và chứa một lượng lớn các mô-đun Perl để bạn sử dụng. Đây là một cộng đồng hoặc mạng lưới gồm nhiều nhà phát triển đóng góp các mô-đun như vậy. Bằng cách cài đặt hỗ trợ cho các mô-đun CPAN trong mô-đun perl của bạn, bạn có thể sử dụng các mô-đun CPAN và làm cho công việc của mình dễ dàng hơn. Hầu hết các mô-đun Perl được viết bằng Perl, một số sử dụng XS (chúng được viết bằng C) nên yêu cầu trình biên dịch C (rất dễ để thiết lập này - đừng hoảng sợ. Các mô-đun có thể phụ thuộc vào các mô-đun khác (hầu như luôn luôn trên CPAN) và không thể cài đặt mà không có chúng (hoặc không có phiên bản cụ thể của chúng). Bạn nên đọc kỹ tài liệu hướng dẫn để biết các tùy chọn bên dưới. Nhiều mô-đun trên CPAN hiện yêu cầu phiên bản Perl gần đây (phiên bản 5.8 trở lên). Cài đặt cpanminus một tập lệnh để lấy, giải nén, xây dựng và cài đặt các mô-đun từ CPAN để cài đặt các mô-đun khác dễ dàng hơn (bạn sẽ cảm ơn chúng tôi sau). Để cài đặt Ứng dụng-cpanminus mô-đun Perl, trong loại dòng lệnh:

cpan App::cpanminus

cpan App::cpanminus Đảm bảo bạn có kết nối internet trong khi các mô-đun Perl đang được tải xuống và cài đặt.

Cài đặt mô-đun trừ cpan

Bây giờ cài đặt bất kỳ mô-đun nào:

cpan –i <Module_Name>.		

Hãy xem ví dụ về cài đặt mô-đun File::Data(Đó là Giao diện để truy cập Dữ liệu tệp).

Cài đặt mô-đun trừ cpan

Biến Perl

Bây giờ chúng ta sẽ nói về các biến. Bạn có thể tưởng tượng biến giống như loại thùng chứa một hoặc nhiều giá trị. Sau khi được xác định, tên của biến vẫn giữ nguyên nhưng giá trị hoặc các giá trị thay đổi nhiều lần.

Có 3 loại biến:

Các loại biến trong Perl

Các loại biến trong Perl

Đơn giản nhất là đại số vô hướng, và đây là chủ đề hôm nay của chúng ta

Biến vô hướng

Loại biến này giữ một giá trị duy nhất.

Tên của nó bắt đầu bằng ký hiệu đô la và mã nhận dạng Perl (đó là tên biến của chúng tôi).

Biến vô hướng trong Perl

Biến vô hướng trong Perl

Quy ước đặt tên

Nếu bạn đã quen thuộc với các ngôn ngữ lập trình khác thì bạn sẽ biết rằng có một số quy tắc nhất định về việc đặt tên biến. Tương tự, Perl có ba quy tắc đặt tên cho các đại lượng vô hướng.

  1. Tất cả các tên vô hướng sẽ bắt đầu bằng $. Thật dễ dàng để nhớ thêm tiền tố $ vào mỗi tên. Hãy nghĩ về nó như một $vô hướng.
  2. Giống như PHP. Sau ký tự đầu tiên $, ký tự đặc biệt trong Perl, cho phép các ký tự chữ và số, tức là từ a đến z, A đến Z và 0 đến 9. Ký tự gạch dưới cũng được cho phép. Sử dụng dấu gạch dưới để tách tên biến thành hai từ. 'Nhưng ký tự đầu tiên không thể là số'
  3. Mặc dù số có thể là một phần của tên, chúng không thể xuất hiện ngay sau $. Điều này ngụ ý rằng ký tự đầu tiên sau $ sẽ là một chữ cái hoặc dấu gạch dưới. Những ký tự này xuất phát từ C/C++ nền sẽ có thể nhận ra ngay sự giống nhau. Ví dụ

Ví dụ về Perl:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Tuy nhiên, đây không phải là tên biến vô hướng hợp pháp.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

Quy tắc chung nói rằng, khi Perl chỉ có một trong số đó, đó là một đại lượng vô hướng. Các đại lượng vô hướng có thể được đọc từ các thiết bị và chúng ta có thể sử dụng nó cho các chương trình của mình.

Hai loại kiểu dữ liệu vô hướng

  1. Numbers
  2. Strings

Numbers:

Trong loại dữ liệu vô hướng này, chúng ta có thể chỉ định:

  • số nguyên, đơn giản là số nguyên, như 2, 0, 534
  • số dấu phẩy động, là số thực, như 3.14, 6.74, 0.333

Số biến trong Perl

Lưu ý: Nói chung, trình thông dịch Perl xem số nguyên giống như số dấu phẩy động. Ví dụ: nếu bạn viết 2 trong chương trình của mình, Perl sẽ thấy nó như 2.0000

Chữ số nguyên:

Nó bao gồm một hoặc nhiều chữ số, tùy ý đặt trước dấu cộng hoặc dấu trừ và chứa dấu gạch dưới.

Ví dụ về Perl:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Như bạn có thể thấy - nó không có gì đặc biệt cả. Nhưng tin tôi đi, đây là loại vô hướng phổ biến nhất. Họ ở khắp mọi nơi.

Chữ dấu phẩy động:

Nó bao gồm các chữ số, tùy chọn trừ, dấu thập phân và số mũ.

Ví dụ về Perl:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E – this means the same the lowercase version -3.6e-20

Chữ dấu phẩy động trong Perl

Biểu diễn bát phân, thập lục phân và nhị phân:

Nó thay thế cho hệ thập phân. Cho phép tôi chỉ cho bạn cách biểu diễn bát phân, thập lục phân và nhị phân. Một bảng ngắn trình bày tất cả thông tin quan trọng về phong cách kỳ lạ này:

Đại diện Căn cứ Tiến hành bởi
Octal 8 0 (không)
Hexadecimal 16 0x
Nhị phân 2 0b

Ví dụ về Perl:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Tất cả các giá trị này cho Perl đều có ý nghĩa như nhau. Perl không lưu trữ các giá trị theo cùng một định dạng. Nó sẽ chuyển đổi nội bộ các giá trị thập lục phân, nhị phân, bát phân sang thập phân này.

Phép gán là phép toán phổ biến nhất trên đại số vô hướng và nó rất đơn giản. Perl sử dụng dấu bằng đó. Nó lấy một giá trị của biểu thức ở phía bên phải và đặt giá trị này vào biến của chúng ta.

Chúng ta hãy xem các ví dụ:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Hơn nữa, bạn có thể đưa vào biến không chỉ một số mà còn cả một biểu thức.

$z = 6 + 12               # give $z value of 18

Strings

Chuỗi: Đây cũng là loại vô hướng rất đơn giản.

Độ dài tối đa của một chuỗi trong Perl phụ thuộc vào dung lượng bộ nhớ mà máy tính có. Không có giới hạn về kích thước của chuỗi, bất kỳ số lượng ký tự, ký hiệu hoặc từ nào cũng có thể tạo nên chuỗi của bạn. Chuỗi ngắn nhất không có ký tự. Lâu nhất có thể lấp đầy toàn bộ bộ nhớ hệ thống. Các chương trình Perl có thể được viết hoàn toàn bằng bộ ký tự ASCII 7 bit. Perl cũng cho phép bạn thêm bất kỳ bộ ký tự 8 bit hoặc 16 bit nào. các ký tự không phải ASCII trong chuỗi ký tự. Perl cũng đã thêm hỗ trợ cho Unicode UTF-8.

Các loại chuỗi trong Perl

Giống như số, có hai loại chuỗi khác nhau:

  • Chuỗi ký tự trích dẫn đơn
  • Double trích dẫn chuỗi ký tự

Chuỗi ký tự được trích dẫn đơn

Dấu ngoặc đơn được sử dụng để chứa dữ liệu mà bạn muốn hiểu theo nghĩa đen. Một ví dụ ngắn và mọi thứ sẽ rõ ràng:

Ví dụ về Perl:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

Đầu ra:

nó là $num

Ở đây do giá trị dấu nháy đơn của $num in không được lấy và các ký tự chữ '$','n', 'u' & 'm' được thêm vào giá trị của $txt

Double- chuỗi ký tự được trích dẫn

Double dấu ngoặc kép được sử dụng để bao quanh dữ liệu cần được nội suy trước khi xử lý. Điều đó có nghĩa là các ký tự thoát và biến không chỉ được chèn theo nghĩa đen vào các hoạt động sau đó mà được đánh giá tại chỗ. Ký tự thoát có thể được sử dụng để chèn dòng mới, tab, v.v.

Ví dụ về Perl:

$num = 7; 
$txt = "it is $num"; 
print $txt;

Đầu ra:

nó là 7

Ở đây do giá trị của dấu ngoặc kép $num được thêm vào giá trị của $txt

Double-quotes nội suy các biến vô hướng và mảng, nhưng không phải băm. Mặt khác, bạn có thể sử dụng dấu ngoặc kép để nội suy các lát cắt của cả mảng và băm.

Bí ẩn\n

Hãy xem xét chương trình sau

Ví dụ về Perl:

print "hello \n";

Đầu ra:

xin chào

Perl không chỉ hiển thị 'hello\n' mà chỉ hiển thị 'hello'. Tại sao? Bởi vì '\n' là một dấu hiệu đặc biệt và có nghĩa là bạn muốn chuyển sang một dòng mới trong khi hiển thị văn bản trong chương trình của mình. in “xin chào\n dòng mới”; Câu hỏi tiếp theo- có dấu hiệu đặc biệt nào khác không? Vâng, đúng vậy! Nhưng đừng lo lắng - chỉ một số thôi. Kiểm tra bảng dưới đây

xây dựng Mô tả Chi tiết
\n dòng mới
\r trở lại
\t chuyển hướng
\f thức ăn dạng
\b BackSpace
\a chuông
\e thoát
\ 007 bất kỳ giá trị ASCII bát phân nào (ở đây, 007 = chuông)
\x7f bất kỳ giá trị hex nào (ở đây, 7f = xóa)
\\ dấu gạch chéo ngược
\ ” dấu ngoặc kép
\l chữ thường tiếp theo
\L viết thường tất cả các chữ cái theo sau cho đến \E
\u viết hoa chữ cái tiếp theo
\U viết hoa tất cả các chữ cái theo sau cho đến \E
\E Chấm dứt \L, \U

Tôi biết, không phải là 'chỉ một vài'... Nhưng tin tôi đi, bạn phải biết chỉ

Chuỗi biến

Đó là hoạt động tương tự mà chúng ta thấy trong phép gán số. Perl lấy chuỗi của chúng ta từ phía bên phải của dấu bằng và đặt chuỗi này vào một biến.

Ví dụ về Perl:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

Đầu ra:

hướng dẫn315

Như bạn thấy, bạn có thể đặt số và chuỗi vào cùng một biến. Không có lớp biến.

Nối chuỗi (dấu chấm):

Toán tử nối “.” kết hợp hai hoặc nhiều chuỗi. Nhớ! Nếu chuỗi chứa dấu ngoặc kép, dấu xuống dòng, dấu gạch chéo ngược thì tất cả các ký tự đặc biệt này cần phải được thoát bằng dấu gạch chéo ngược.

Biến Perl '' Ví dụ:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

Đầu ra:

Tom là con mèo yêu thích của mẹ

Các dây

“$a”, “$b”, được nối và lưu trữ trong “$c” bằng cách sử dụng “.” nhà điều hành.

Đến cuối cùng…

Chuyển đổi giữa Numbers và chuỗi:

Như bạn đã biết, Perl tự động chuyển đổi giữa các số thành chuỗi khi cần. Làm sao Perl biết được chúng ta cần gì ngay lúc này? Điều này rất đơn giản - mọi thứ phụ thuộc vào toán tử (chúng ta sẽ nói về toán tử sau, bây giờ, chỉ cần chấp nhận rằng có rất nhiều toán tử, khác nhau đối với số và chuỗi) Nếu một toán tử mong đợi một số, Perl sẽ sử dụng giá trị dưới dạng một số. Nếu một toán tử mong đợi một chuỗi, Perl sẽ sử dụng giá trị dưới dạng một chuỗi. Nói cách khác - bạn không cần phải lo lắng về loại chuyển đổi này. Ví dụ ngắn gọn và mọi thứ sẽ rõ ràng:

Ví dụ về Perl:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

Đầu ra:

71

giá trị của $string được chuyển đổi thành số nguyên và được cộng vào giá trị của $number.

Kết quả của phép cộng, 71, được gán cho $result.

Phạm vi của một biến – Công cụ sửa đổi truy cập

Chúng ta có thể khai báo một đại lượng vô hướng ở bất cứ đâu trong chương trình. Nhưng bạn cần chỉ định một công cụ sửa đổi truy cập

Có 3 loại sửa đổi

  1. my
  2. địa phương
  3. vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf

Của tôi: Bằng cách sử dụng điều này, bạn có thể khai báo bất kỳ biến nào cụ thể trong khối. tức là trong dấu ngoặc nhọn.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Không có đầu ra

Đầu ra của chương trình sẽ không có gì!

Hướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ

Trong ví dụ trên, bạn sẽ thấy có hai biến được khai báo, một biến nằm trong khối if ($var_2) và biến còn lại nằm ngoài khối If ($var). Biến được khai báo bên ngoài khối sẽ có thể truy cập được bằng khối if nhưng biến được khai báo bên trong khối if sẽ không thể truy cập được đối với chương trình bên ngoài.

Cục bộ: Bằng cách sử dụng tính năng này, chúng ta thực sự có thể che giấu các giá trị biến giống nhau thành các giá trị khác nhau mà không thực sự thay đổi giá trị ban đầu của biến, giả sử chúng ta có một biến $a mà giá trị được gán là 5, bạn thực sự có thể thay đổi giá trị của biến đó bằng cách khai báo lại cùng một biến bằng từ khóa cục bộ mà không thay đổi giá trị ban đầu của biến là 5. Hãy xem cách này hoạt động bằng một ví dụ.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

Đầu ra của chương trình trên sẽ theo cách này.

địa phương, $var = 3

toàn cầu, $var = 5

Bằng cách này chúng ta có thể thay đổi giá trị của biến mà không ảnh hưởng đến giá trị ban đầu.

Của chúng tôi: Sau khi một biến được khai báo bằng công cụ sửa đổi truy cập “của chúng tôi”, nó có thể được sử dụng trên toàn bộ gói. Giả sử bạn có mô-đun Perl hoặc gói test.pm có một biến được khai báo với phạm vi của chúng tôi. Biến này có thể được truy cập trong bất kỳ tập lệnh nào sẽ sử dụng gói đó.

Nếu bạn nghiêm túc về việc lập trình trong Perl, bạn nên bắt đầu chương trình của mình với

#! / usr / local / bin / perl

Sử dụng nghiêm ngặt;

Điều này sẽ giúp bạn viết mã tốt hơn và sạch hơn. 'use strict' bật pragma nghiêm ngặt, điều này sẽ khiến bạn khai báo các biến của mình bằng từ khóa của tôi.

Đây là một cách thực hành lập trình tốt

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Kết quả: Lỗi

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

Đầu ra:

10

Mảng Perl

Mảng Perl là gì?

Mảng là một loại biến đặc biệt lưu trữ dữ liệu dưới dạng danh sách; mỗi phần tử có thể được truy cập bằng cách sử dụng số chỉ mục sẽ là duy nhất cho mỗi phần tử. Bạn có thể lưu trữ số, chuỗi, giá trị nổi, v.v. trong mảng của mình. Điều này trông thật tuyệt. Vậy làm cách nào để tạo một mảng trong Perl? Trong Perl, bạn có thể xác định một mảng bằng ký tự '@' theo sau là tên mà bạn muốn đặt. Hãy xem xét việc xác định một mảng trong Perl.

@array của tôi;

Đây là cách chúng ta định nghĩa một mảng trong Perl; bạn có thể đang nghĩ chúng ta cần lưu trữ dữ liệu trong đó như thế nào. Có nhiều cách khác nhau để lưu trữ dữ liệu trong một mảng. Điều này phụ thuộc vào cách bạn sẽ sử dụng nó.

my @array=(a,b,c,d);
print @array;

Đầu ra:

abcd

Đây là một mảng có 4 phần tử trong đó.

Chỉ mục mảng bắt đầu từ 0 và kết thúc ở kích thước được khai báo tối đa, trong trường hợp này, kích thước chỉ mục tối đa là 3.

Ví dụ về mảng Perl

Ví dụ về mảng Perl

Bạn cũng có thể khai báo một mảng theo cách trên; sự khác biệt duy nhất là nó lưu trữ dữ liệu vào một mảng coi khoảng trắng là dấu phân cách. Ở đây, qw() có nghĩa là từ trích dẫn. Ý nghĩa của chức năng này là tạo ra một danh sách các từ. Bạn có thể sử dụng qw theo nhiều cách để khai báo một mảng.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

Đầu ra:

abcdpqrsvxyz

Giả sử bạn muốn gán giá trị cho 5th phần tử của một mảng, chúng ta sẽ làm điều đó như thế nào.

$array [4] ='e';

Mảng tuần tự

Mảng tuần tự là nơi bạn lưu trữ dữ liệu một cách tuần tự. Giả sử bạn muốn lưu trữ 1-10 số hoặc bảng chữ cái az trong một mảng. Thay vì nhập tất cả các chữ cái, bạn có thể thử những thứ như bên dưới –

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

Đầu ra:

12345678910

Kích thước mảng Perl

Chúng tôi có một mảng đã có sẵn và bạn không biết kích thước của mảng đó là bao nhiêu, vậy cách khả thi để tìm thấy mảng đó là gì.

@array= qw/a b c d e/;
print $size=scalar (@array);

Chúng ta có thể lấy kích thước của một mảng mà không cần sử dụng hàm không? Vâng, chúng tôi có thể.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

Đầu ra:

5

5

Mảng động

Phương pháp khai báo một mảng ở trên được gọi là mảng tĩnh, nơi bạn biết kích thước của một mảng.

Mảng động là gì?

Mảng động là những mảng mà bạn khai báo mà không chỉ định bất kỳ giá trị nào trên chúng. Vậy chính xác khi nào chúng ta lưu trữ các giá trị trong mảng đó? Đơn giản, chúng tôi lưu trữ chúng trong thời gian chạy. Đây là một chương trình đơn giản cho việc đó.

Chúng tôi sẽ sử dụng một số hàm Perl có sẵn để thực hiện nhiệm vụ này.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}

Đầu ra:

Đây là

kiểu như vậy

mic

rr

y

Hàm phân tách chia nội dung của chuỗi thành một mảng dựa trên dấu phân cách được cung cấp cho nó. Hàm này cũng sẽ loại bỏ dấu phân cách khỏi chuỗi, trong trường hợp này là 'a';

Đẩy, Pop, shift, unshift cho mảng Perl:

Các hàm này có thể được sử dụng trong Perl để thêm/xóa các phần tử mảng.

  • Perl Push: thêm phần tử mảng vào cuối mảng hiện có.
  • Perl Pop: loại bỏ phần tử cuối cùng khỏi mảng.
  • Perl Shift: xóa phần tử đầu tiên khỏi mảng.
  • Perl Unshift: thêm một phần tử vào đầu mảng.

Hàm mảng trong Perl

Hãy xem một ví dụ nơi chúng ta có thể sử dụng các hàm dưới đây.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

Đầu ra:

Ngày 1 : Thứ Hai Thứ Tư Thứ Tư

Lần 2 khi đẩy: Thứ Hai Thứ Tư Thứ Năm

Thứ 3 khi không ca: Thứ Sáu Thứ Ba Thứ Tư Thứ Năm

Thứ 4 khi nhạc pop: Thứ Sáu Thứ Hai Thứ Tư Thứ Tư

Ca thứ 5 : Thứ Hai Thứ Tư Thứ Tư

Băm Perl

Tại sao chúng ta cần Hash?

Chúng ta đã học về vô hướng và mảng trong các phần trước.

Chính xác thì vô hướng làm gì? Nó chỉ lưu trữ số nguyên và chuỗi.

Chính xác thì mảng làm gì? Nó là một tập hợp các đại lượng vô hướng, trong đó bạn truy cập từng phần tử của một mảng bằng cách sử dụng các chỉ mục. Tuy nhiên, sử dụng mảng có phải là ý tưởng hay khi bạn có hàng trăm, hàng nghìn bản ghi không? Chúng ta sẽ quên chỉ mục nào có giá trị gì. Để khắc phục tình trạng này, chúng ta có thứ gì đó giống như hàm băm Perl.

Băm là gì?

Một hàm băm cũng có thể chứa số lượng vô hướng mà mảng có thể chứa. Sự khác biệt duy nhất là chúng tôi không có bất kỳ chỉ mục nào thay vì chúng tôi có khóa và giá trị. Một hàm băm có thể được khai báo, bắt đầu bằng % theo sau là tên của hàm băm. Hãy xem một ví dụ về cách chúng ta có thể xác định hàm băm Perl và cách chúng ta có thể phân biệt nó với mảng

Hãy xem xét một ví dụ về ba người và tuổi của họ được thể hiện trong một mảng.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

Đầu ra:

Sainath33Krishna24Sruthi25

Bằng cách này, rất khó để biết độ tuổi của từng người vì chúng ta cần nhớ cả vị trí chỉ mục tên và tuổi của tất cả mọi người. Có thể đơn giản khi bạn có 3 cái tên, nhưng khi bạn có 1000 cái tên trở lên thì sao? Bạn biết câu trả lời.

Băm trong Perl

Điều này chúng ta có thể khắc phục bằng cách sử dụng hàm băm.

Ví dụ băm:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

Đầu ra:

Sainath33Krishna24Shruthi25Sainath33Krishna24Sruthi25

Bây giờ chúng ta đã khai báo một hàm băm, thật tuyệt!! Nhưng, làm thế nào để chúng ta truy cập hoặc in nó? Mỗi phần tử trong hàm băm phải được truy cập bằng khóa liên kết của nó và sẽ có giá trị được gán. Vì vậy, có một ánh xạ một một giữa mỗi khóa và giá trị trong hàm băm.

Để in được tuổi của một người nào đó, bạn chỉ cần nhớ tên của người đó.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Bạn có thể thắc mắc tại sao tôi lại sử dụng $hash{KeyName}, hãy nhớ rằng hàm băm lại là một tập hợp các giá trị vô hướng. Vì vậy, chúng ta có thể sử dụng $ đại diện cho vô hướng để truy cập từng phần tử băm.

Ví dụ về Hash trong Perl

Lưu ý: Mỗi Khóa trong hàm băm phải là duy nhất, nếu không nó sẽ ghi đè giá trị của bạn đã được chỉ định trước đó.

Làm cách nào chúng ta có thể gán một hàm băm cho một hàm băm khác? Đơn giản, giống như cách chúng tôi làm đối với

Chúng tôi cũng có thể in toàn bộ hàm băm.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

Đầu ra:

Tom23

Thêm băm Perl

Như bạn có thể thấy, chúng tôi đã có hàm băm %newHash và bây giờ chúng tôi cần thêm nhiều mục vào đó.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

Đầu ra:

Jim25John26Harry27

Phím xóa Perl

Bạn có thể muốn xóa một mục khỏi hàm băm. Đây là cách chúng tôi có thể làm điều đó.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Xóa là một chức năng sẵn có của Perl. Ở đây chúng ta sẽ xem một ví dụ về việc gán hàm băm cho một mảng.

@array=%newHash;
print "@array";

Lưu ý: Bất cứ khi nào bạn in hàm băm hoặc khi bạn lưu trữ hàm băm vào một mảng. Thứ tự có thể luôn khác nhau. Nó không giống nhau luôn.

Chúng ta chỉ có thể gán các khóa hoặc giá trị của hàm băm cho một mảng.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Để loại bỏ tất cả các mục trong hàm băm, chúng ta có thể gán trực tiếp hàm băm thành null.

%newHash=();# Điều này sẽ xác định lại hàm băm không có mục nào.

Câu lệnh có điều kiện Perl

Chúng ta có thể sử dụng các câu lệnh có điều kiện trong Perl. Vậy câu lệnh điều kiện là gì? Câu lệnh có điều kiện là những câu lệnh trong đó bạn thực sự kiểm tra xem một số trường hợp có được thỏa mãn trong mã của mình hay không.

Hãy nghĩ về một ví dụ, bạn đang mua một số loại trái cây và bạn không thích giá cao hơn 100 đô la. Vì vậy, quy tắc ở đây là 100 đô la.

Perl hỗ trợ hai loại câu lệnh điều kiện; chúng là nếu và trừ khi.

Perl Nếu

Nếu khối mã sẽ được thực thi khi điều kiện đúng.

Câu lệnh có điều kiện Perl

my $a=5;
if($a==5)
{
   print "The value is $a";
}

Đầu ra:

5

Perl nếu khác

Nhìn có vẻ tốt. Chúng ta hãy nghĩ về một tình huống trong đó $a không phải là 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

Đầu ra:

Giá trị là 10 —FAIL

Bằng cách này, chúng ta chỉ có thể kiểm soát một điều kiện tại một thời điểm. Đó có phải là một hạn chế? Không, bạn cũng có thể kiểm soát các điều kiện khác nhau bằng cách sử dụng if… elsif … else.

Perl Khác Nếu

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block – The value is $a";
}

Đầu ra:

Khối elsif đã thực thi –Giá trị là 5

Trong trường hợp trên, khối elsif sẽ được thực thi khi $a bằng 5.

Có thể có những tình huống trong đó cả khối mã if và elsif đều bị lỗi. Trong trường hợp này, khối mã else sẽ được thực thi. Bạn thực sự có thể loại bỏ việc kiểm tra mã khác nếu bạn không muốn đưa vào.

Perl lồng nhau nếu

Trong trường hợp này, bạn có thể sử dụng khối mã if trong một khối mã if nữa.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block – The value is $a";
    }

Đầu ra:

Bên trong khối thứ 1 – Giá trị là 11

Thực thi cùng mã bằng cách thay đổi giá trị của $a; bạn có thể tìm hiểu phần còn lại.

Perl trừ khi

Bạn đã có ý tưởng nếu xảy ra (Nếu điều kiện đúng thì nó sẽ thực thi khối mã). Trừ khi ngược lại với if, khối mãtrừ khi sẽ được thực thi nếu điều kiện sai.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

Đầu ra:

Bên trong khối thứ 1 – Giá trị là 5

Đoán xem đầu ra sẽ là gì. Bạn đúng rồi!!!!!. Đầu ra sẽ là câu lệnh in của khối else. Vì điều kiện trong khối mã trừ khi là đúng, nên hãy nhớ rằng khối trừ khi sẽ chỉ được thực thi nếu điều kiện là sai. Thay đổi giá trị của $a và thực thi mã bạn sẽ thấy sự khác biệt.

Perl Sử dụng nếu

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

Đầu ra:

Khối bên trong khác

Sử dụng trừ khi

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

Đầu ra:

Bên trong trừ khi chặn

Vòng lặp Perl - Cấu trúc điều khiển

Perl hỗ trợ các cấu trúc điều khiển tương tự như các ngôn ngữ lập trình khác. Perl hỗ trợ bốn loại cấu trúc điều khiển for, foreach, while và cho đến khi. Chúng tôi sử dụng các câu lệnh này để thực thi lặp đi lặp lại một số mã.

Đối với vòng lặp Perl

Đối với khối mã sẽ thực thi cho đến khi điều kiện được thỏa mãn. Hãy lấy một ví dụ về cách Perl lặp một mảng.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

Đầu ra:

Giá trị chỉ số mảng 0 là 1

Giá trị chỉ số mảng 1 là 2

Giá trị chỉ số mảng 2 là 3

Giá trị chỉ số mảng 3 là 4

Giá trị chỉ số mảng 4 là 5

Giá trị chỉ số mảng 5 là 6

Giá trị chỉ số mảng 6 là 7

Giá trị chỉ số mảng 7 là 8

Giá trị chỉ số mảng 8 là 9

Giá trị chỉ số mảng 9 là 10

Ở đây, trong biểu thức for (), có nhiều câu lệnh được đưa vào. Có một ý nghĩa cho mỗi người trong số họ.

for (khởi tạo; điều kiện; tăng dần)

Đây là một cách khác để sử dụng for.

for(1..10)
{
    print "$_ n";
    print "\n";
}

Đầu ra:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

Câu lệnh for each có thể được sử dụng theo cách tương tự như for; sự khác biệt chính là chúng tôi không có bất kỳ kiểm tra điều kiện và tăng dần nào trong phần này.

Hãy lấy ví dụ tương tự với foreach Perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

Đầu ra:

Giá trị là 1

Giá trị là 2

Giá trị là 3

Giá trị là 4

Giá trị là 5

Giá trị là 6

Giá trị là 7

Giá trị là 8

Giá trị là 9

Giá trị là 10

Foreach lấy từng phần tử của một mảng và gán giá trị đó cho $var cho mỗi lần lặp. Chúng ta cũng có thể sử dụng $_ cho mục đích tương tự.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

Đầu ra:

Giá trị là 1

Giá trị là 2

Giá trị là 3

Giá trị là 4

Giá trị là 5

Giá trị là 6

Giá trị là 7

Giá trị là 8

Giá trị là 9

Giá trị là 10

Điều này có vẻ tốt cho việc truy cập mảng. Còn Hashes thì sao, làm cách nào chúng ta có thể lấy được khóa và giá trị băm bằng cách sử dụng foreach?

Chúng ta có thể sử dụng foreach để truy cập các khóa và giá trị của hàm băm bằng cách lặp nó.

Vòng lặp For trong Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

Đầu ra:

Mickey

Tom

Jerry

Bạn có thể thắc mắc Tại sao chúng tôi lại sử dụng Khóa trong foreach(). Khóa là một hàm sẵn có của Perl nơi chúng ta có thể nhanh chóng truy cập vào các khóa của hàm băm. Làm thế nào về các giá trị? Chúng ta có thể sử dụng hàm giá trị để truy cập các giá trị của hàm băm.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

Đầu ra:

giá trị là 24

giá trị là 23

giá trị là 25

Perl trong khi

Vòng lặp Perl While là một cấu trúc điều khiển, trong đó khối mã sẽ được thực thi cho đến khi điều kiện là đúng.

Khối mã sẽ chỉ thoát nếu điều kiện sai.

Hãy lấy một ví dụ cho vòng lặp Perl While.

Vòng lặp while trong Perl

Đây là một vấn đề yêu cầu người dùng nhập dữ liệu và sẽ không thoát ra cho đến khi số được cung cấp là '7'.

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

Đầu ra:

Đoán một số từ 1 đến 10

9

Đoán một số từ 1 đến 10

5

Đoán một số từ 1 đến 10

7

Bạn đã đoán được con số 7 may mắn

Trong ví dụ trên, điều kiện while sẽ không đúng nếu chúng ta nhập đầu vào khác '7'.

Nếu bạn thấy cách hoạt động của while ở đây, khối mã sẽ chỉ thực thi nếu điều kiện trong một khoảng thời gian là đúng.

Perl do-while

Vòng lặp do while sẽ thực thi ít nhất một lần ngay cả khi điều kiện trong phần while là sai.

Hãy lấy ví dụ tương tự bằng cách sử dụng do while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

Đầu ra:

10

9

8

7

6

5

4

3

2

1

Giá trị bây giờ nhỏ hơn 1

Perl cho đến khi

Khối mã cho đến khi tương tự như trừ khi trong câu lệnh có điều kiện. Ở đây, khối mã sẽ chỉ thực thi nếu điều kiện trong khối Until là sai.

Hãy lấy ví dụ tương tự mà chúng ta đã sử dụng trong trường hợp một thời gian.

Đây là một vấn đề đòi hỏi người dùng phải nhập dữ liệu và sẽ không thoát ra cho đến khi tên được cung cấp không phải là 'sai'.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

Đầu ra:

Nhập tên bất kỳ sai

Perl làm-cho đến khi:

Do cho đến khi chỉ có thể được sử dụng khi chúng ta cần một điều kiện sai và nó phải được thực thi ít nhất một lần.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

Đầu ra:

Nhập bất kỳ tên nào Howard

Nhập bất kỳ tên nào Sheldon

Nhập tên bất kỳ sai

Thực thi các mã ví dụ while, do-while, Until và do-until để thấy sự khác biệt.

Perl Operator

Là gì Operator?

Operators trong ngôn ngữ máy tính chỉ ra một hành động có thể được thực hiện trên một số tập hợp biến hoặc giá trị mà máy tính có thể hiểu được. Perl đã kết hợp hầu hết Operators từ ngôn ngữ C. Perl có nhiều toán tử hơn so với các ngôn ngữ lập trình khác. OperaCác toán tử được phân loại thành toán tử số học, toán tử logic, toán tử quan hệ và toán tử gán.

toán học Operator:

Toán tử số học là những toán tử có thể được sử dụng để thực hiện một số phép toán cơ bản. Các toán tử số học này là toán tử nhị phân trong đó chúng ta cần hai đối số để thực hiện một phép toán cơ bản. Chúng ta cũng có thể sử dụng toán tử một ngôi cho các phép toán cơ bản khác; bạn có thể thấy sự khác biệt trong các ví dụ dưới đây.

Operator Mô tả Chi tiết Ví dụ

+

Phép cộng được sử dụng để cộng hai giá trị hoặc biến

giữ giá trị

$x=5+6; # hoặc

$y=6;

$z=$x+$y;

Toán tử trừ dùng để trừ hai giá trị hoặc biến giữ giá trị

$x=6-5; # hoặc

$y=6;

$z=$x-$y;

*

Toán tử nhân dùng để nhân hai giá trị hoặc biến chứa giá trị

$x=6*5; # hoặc

$y=6;

$z=$x*$y;

/

Toán tử chia dùng để chia hai giá trị hoặc biến chứa giá trị

$x=36/6; # hoặc

$y=6;

$z=$x/$y;

**

Toán tử hàm mũ được sử dụng để cung cấp số mũ và nhận giá trị.

Ví dụ: 22 = 43 = 27

$x=5**5; # hoặc

$x=4;

$y=2;

$z=$x**$y;

%

Toán tử mô đun dùng để nhận lời nhắc trong quá trình chia hai giá trị hoặc biến giữ giá trị

$x=5%2; # hoặc

$x=10;

$y=2;

$z=$x % $y;

++

Toán tử cộng một ngôi để tăng giá trị của biến lên 1

$x=5;

$ x ++;

Or

++$x;

-

Toán tử trừ một ngôi để giảm giá trị của một biến đi 1

$x=5;

$x–; # bài giảm

Or

–$x;# giảm trước

Ví dụ để hoàn thành tất cả các hoạt động trên.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

Đầu ra:

Cộng 10 và 2 bằng 12

Sub của 10 và 2 là 8

Mul của 10 và 2 là 20

Số chia của 10 và 2 là 5

Exp của 10 và 2 là 100

Mod của 10 và 2 là 0

Chuyển nhượng Operator:

Toán tử gán chỉ đơn giản gán giá trị cho các biến, nhưng có một điều nữa chúng ta cần nhớ ở đây, toán tử gán cũng sẽ thực hiện các phép toán số học và gán giá trị mới cho cùng một biến mà phép toán được thực hiện trên đó.

Operator Mô tả Chi tiết Ví dụ

+=

Toán tử cộng dùng để cộng và gán giá trị cho cùng một biến

$x=4;

$x+=10;

-=

Toán tử trừ dùng để trừ và gán giá trị cho cùng một biến

$x=4;

$x-=10;

*=

Toán tử nhân dùng để cộng và gán giá trị cho cùng một biến

$x=4;

$x*=10;

/=

Toán tử chia dùng để chia và gán giá trị cho cùng một biến

$x=4;

$x/=10;

** =

Toán tử số mũ được sử dụng để lấy số mũ và gán giá trị cho cùng một biến

$x=4;

$x**=10;

%=

Toán tử mô đun dùng để nhận lời nhắc trong quá trình chia và gán giá trị cho cùng một biến

$x=10;

$x%=4;

Ví dụ để hoàn thành tất cả các hoạt động trên.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

Đầu ra:

Thêm = 15

Phụ= 10

Mul = 50

Số chia = 10

Logic và quan hệ Operator:

Perl sử dụng các toán tử logic để so sánh các số và chuỗi. Hầu hết các toán tử logic đều được sử dụng trong Câu lệnh có điều kiện.

Logic và quan hệ Operators trong Perl

Logic và quan hệ Operators trong Perl

Operator Mô tả Chi tiết

==hoặc phương trình

Operator được sử dụng để kiểm tra xem cả hai biến có bằng nhau không

!=Hoặc ne

Operator dùng để kiểm tra xem cả hai biến có bằng nhau không

> hoặc gt

Operator được sử dụng để kiểm tra xem

A lớn hơn B

<or lt

Operator được sử dụng để kiểm tra xem

A nhỏ hơn B

>=hoặc ge

Operator được sử dụng để kiểm tra xem

A lớn hơn hoặc bằng B

<= hoặc le

Operator được sử dụng để kiểm tra xem

A nhỏ hơn hoặc bằng B

|| hoặc hoặc

Operator được sử dụng để kiểm tra xem A hoặc B có đang giữ giá trị không

&&hoặc và

Operator được sử dụng để kiểm tra cả A và B đang giữ giá trị

Hãy để chúng tôi lấy một ví dụ mà chúng tôi có thể giải thích tất cả các tình huống.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

Đầu ra:

Đúng — bằng 5 và 5

Đúng — không bằng 6 và 7

Đúng — 7 lớn hơn 6

Đúng - 6 nhỏ hơn 7

Đúng - 6 nhỏ hơn 7

Đúng — 7 lớn hơn 6

Bạn có thể xem ví dụ về toán tử logic ở các phần sau.

Các biến đặc biệt của Perl

Biến đặc biệt Perl là gì?

Các biến đặc biệt trong Perl là những biến có ý nghĩa được xác định trước. Các biến này được biểu thị bằng Tên thật hoặc ký hiệu Dấu chấm câu. Chúng tôi có một biến đặc biệt cho tất cả các Biến được Perl hỗ trợ như biến đặc biệt vô hướng, biến đặc biệt mảng, biến đặc biệt băm. Hầu hết các biến đặc biệt mà chúng ta sử dụng đều là biến vô hướng.

Khi chúng ta muốn sử dụng biến đặc biệt với tên của nó, thì chúng ta phải tải mô-đun Perl 'sử dụng tiếng Anh', để nói rõ ràng với trình thông dịch Perl rằng chúng ta sẽ sử dụng các biến đặc biệt bằng Tên của nó.

Biến đặc biệt vô hướng

Biến Mô tả Chi tiết

$_$ARG

Đây là biến mặc định lưu trữ các giá trị hiện tại.

$0 hoặc $PROGRAM_NAME

Lưu trữ tên tệp của tập lệnh Perl.

$/

Dấu tách bản ghi đầu vào, giá trị này có giá trị mặc định là '\n' là ký tự dòng mới

$.

Giữ số dòng hiện tại của tệp đang được đọc

$,

Dấu phân cách trường đầu ra, điều này chủ yếu được sử dụng bởi câu lệnh print(). Theo mặc định giá trị này được đặt thành 0, chúng ta có thể thay đổi giá trị của biến này.

$\

Dấu phân cách bản ghi đầu ra, giá trị của biến này sẽ trống; chúng ta có thể gán bất kỳ giá trị nào cho giá trị này, giá trị này sẽ được sử dụng bởi câu lệnh print() trong khi in kết quả đầu ra.

$#

Biến này được sử dụng cho định dạng đầu ra khi in số.

$%$FORMAT_PAGE_NUMBER

Sẽ giữ số trang hiện tại của tập tin đã đọc.

$=$FORMAT_LINES_PER_PAGE

Sẽ giữ độ dài trang hiện tại của tệp đã đọc.

$-$FORMAT_LINES_LEFT

Giữ giá trị số dòng còn lại để in từ trang.

$~$FORMAT_NAME

Tên định dạng: Giữ định dạng của đầu ra hiện được chọn theo mặc định tên xử lý tệp.

$^$FORMAT_TOP_NAME

Giữ giá trị định dạng tiêu đề của trình xử lý tệp, theo giá trị mặc định sẽ là _TOP theo sau là tên trình xử lý tệp.

$|$OUTPUT_AUTOFLUSH

Mặc định là số không; giá trị này được dùng để xóa bộ đệm đầu ra sau mỗi lệnh write() hoặc print().

$$

Sẽ giữ số tiến trình đang chạy của trình thông dịch Perl.

$?

Mã trạng thái: Cuộc gọi đường ống và hệ thống. Trạng thái trả về của lệnh được thực thi.

$&$MATCH

Được sử dụng trong các biểu thức chính quy, điều này sẽ chứa một chuỗi khớp mẫu thành công cuối cùng.

$`$ TRƯỚC

Được sử dụng trong các biểu thức chính quy, điều này sẽ giữ chuỗi trước kết quả khớp mẫu thành công cuối cùng.

$'$POSTMATCH

Được sử dụng trong các biểu thức chính quy, điều này sẽ chứa một chuỗi theo sau là kết quả khớp mẫu thành công cuối cùng.

$+$LAST_PAREN_MATCH

Giữ chuỗi của dấu ngoặc cuối cùng khớp với tìm kiếm mẫu cuối cùng.

$

1 đô la, 2 đô la, 3 đô la…. Giữ các giá trị của mẫu khớp theo thứ tự.

$[

Chỉ mục đầu tiên: Mảng, một chuỗi con.

$]

Một phiên bản của Perl.

$ ”

Dấu phân cách được sử dụng cho các thành phần danh sách, theo giá trị mặc định là khoảng trắng.

$;

Dấu phân cách chỉ số được sử dụng trong mảng nhiều chiều

$!

Trong ngữ cảnh số, in số lỗi. Trong ngữ cảnh chuỗi, hãy in lỗi.

$@

Sẽ giữ thông tin lỗi cú pháp, được sử dụng khi sử dụng eval().

$<

Giữ UID thực (id người dùng) của quá trình chạy tập lệnh.

$>

Giữ UID hiệu quả của quá trình chạy tập lệnh.

$(

Giữ GID thực (id nhóm) của quá trình chạy tập lệnh.

$)

Giữ GID hiệu quả của quá trình chạy tập lệnh.

$^D$GỠ LỖI

Giữ giá trị hiện tại của cờ gỡ lỗi.

$ ^ C

Giữ giá trị hiện tại của cờ khi sử dụng chuyển đổi dòng lệnh –c.

$^F

Bộ mô tả tệp hệ thống tối đa, theo giá trị mặc định, được đặt thành 2

$^I$INPLACE_EDIT

Giữ giá trị của chuyển đổi dòng lệnh –i.

$^M

Nhóm bộ nhớ đặc biệt có thể được sử dụng khi tập lệnh Perl chết do hết bộ nhớ.

$^O$OSNAME

Operathông tin hệ thống ting được lưu trữ. 'Linux' cho hệ thống Linux, 'mswin32' cho Windows hệ thống.

$^T$BASETIME

Thời gian khi các tập lệnh đang chạy tính bằng giây.

$^W$CẢNH BÁO

Giá trị hiện tại của chuyển đổi dòng lệnh –w. Công tắc cảnh báo.

$ARGV

Tên của tập tin hiện tại, khi <> được sử dụng.

Mảng các biến đặc biệt:

Biến Mô tả Chi tiết

@INC

Giữ một danh sách các đường dẫn, nơi có thể xem xét các mô-đun hoặc tập lệnh thư viện Perl trong khi thực thi tập lệnh hiện tại. @INC này được sử dụng bởi các câu lệnh use và require để xem xét các đường dẫn đó cho các mô-đun thư viện.

@ARGV

Lưu trữ các đối số dòng lệnh được truyền.

@_

Được sử dụng trong các chương trình con, trong khi truyền tham số cho các chương trình con.

@F

Đây là mảng mà các dòng đầu vào được lưu trữ khi tự động phân tách –a (sử dụng chuyển đổi dòng lệnh).

Các biến đặc biệt băm:

Biến Mô tả Chi tiết

%INC

Tên tệp sẽ là khóa; giá trị sẽ là đường dẫn đến các tệp đó. Được sử dụng bởi làm, sử dụng và yêu cầu.

% ENV

Các biến môi trường của hệ thống

%SIG

Signals xử lý.

Biểu thức chính quy Perl

Biểu thức chính quy là gì?

Biểu thức chính quy Perl đủ mạnh để khớp các mẫu chuỗi trong một câu lệnh hoặc nhóm câu lệnh. Biểu thức chính quy chủ yếu được sử dụng trong phân tích văn bản, khớp mẫu và nhiều hơn nữa dựa trên yêu cầu. Chúng tôi có một số toán tử nhất định, được sử dụng đặc biệt bởi liên kết mẫu biểu thức chính quy =~ và !~, Đây là các toán tử kiểm tra và gán.

Regular Expression Operaxoắn

Regular Expression Operators trong Perl

Regular Expression Operators trong Perl

  • Trận đấu Perl — m//
  • Thay thế Perl – s///
  • Chuyển ngữ Perl – tr///

Trước khi đi xa hơn, Chúng ta cần biết một số điều về biểu thức chính quy; có một số thứ nhất định như ký tự Meta, ký tự đại diện trong cú pháp Perl Regex.

Char Ý nghĩa

\

Đặc biệt hoặc báo giá

*

Khớp 0 ký tự trở lên

+

Khớp 1 ký tự trở lên

?

Khớp 0 hoặc 1 ký tự

|

Có thể được sử dụng để phù hợp với các mẫu thay thế

()

Được sử dụng để lưu trữ mẫu phù hợp

[]

Tập hợp các ký tự có thể được thông qua. Đặc biệt được sử dụng cho số và bảng chữ cái.

{}

Được sử dụng để cung cấp số lượng thời gian trận đấu có thể được thực hiện.

^

Bắt đầu chuỗi

$

Kết thúc chuỗi

\w

Được sử dụng để khớp với một ký tự hoặc từ có thể là chữ và số bao gồm cả “_”

\W

Khớp bất cứ thứ gì ngoài chữ và số

\s

Được sử dụng để khớp với khoảng trắng

\S

Khớp bất cứ thứ gì ngoài khoảng trắng

\d

Ghép số. Không phải giá trị thập phân và giá trị âm

\D

Khớp bất cứ thứ gì ngoài số.

\t

Không gian tab phù hợp

\n

So khớp dòng mới

Trên đây là tập hợp các ký tự có thể được sử dụng trong quá trình khớp mẫu.

Hãy xem một vài ví dụ.

Hãy xem xét tình huống trong đó người dùng cung cấp một số thông tin đầu vào trong quá trình thực thi tập lệnh và chúng tôi muốn kiểm tra xem người dùng có nhập một số tên làm đầu vào hay không. Chúng tôi phải viết một cú pháp biểu thức chính quy để trích xuất tên của bạn và in ra.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

Đầu ra:

Mẫu tìm thấy

Ở đây, chúng ta đã viết biểu thức chính quy là /.*(Guru99).*/.* khớp với tất cả các ký tự trong một chuỗi. MỘT '.' trong kết hợp biểu thức chính quy Perl đề cập đến bất kỳ ký tự nào bao gồm cả khoảng trắng.

Hãy để chúng tôi xem chính xác chúng tôi có thể xây dựng Regex như thế nào.

Hãy xem xét một ví dụ về một chuỗi gồm nhiều từ, chữ số và các ký hiệu đặc biệt như thế này “Xin chào mọi người, đây là số của tôi: +91-99298373639”;

Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Không gian từ không gian từ không gian từ không gian từ không gian từ không gian từ ký tự đặc biệt : dấu cách ký tự đặc biệt + chữ số ký tự đặc biệt –chữ số.

Trận đấu Perl Operaxoắn

Toán tử so khớp được sử dụng để so khớp một chuỗi trong một câu lệnh nào đó hoặc trong một biến.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

Đầu ra:

đúng

Đoạn mã nhỏ này sẽ in ra 'true', vì việc so khớp mẫu Perl sẽ xác định chuỗi trong một biến. Về cơ bản, Perl tìm kiếm văn bản được cung cấp trong // trong suốt chuỗi, ngay cả khi nó tìm thấy ở một nơi nó sẽ trả về 'true'. Mẫu có thể ở bất kỳ đâu trong biến. Chúng ta có thể thử thay thế =~ bằng !~ để thấy sự khác biệt giữa hai toán tử đó.

Perl thay thế Operator

Toán tử này có thể được sử dụng để tìm kiếm và thay thế bất kỳ ký tự nào bằng ký tự null hoặc ký tự khác.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

Đầu ra:

cello bạn khỏe không

Lưu ý: Chúng ta thực sự có thể sử dụng bất kỳ chuỗi khớp mẫu nào như chúng ta đã làm trước đó trong toán tử thay thế này. Ở đây chúng tôi sử dụng trường hợp 'gi', g-globally, i-ignor.

Dịch thuật Perl Operator

Điều này tương tự như Thay thế, nhưng nó không sử dụng bất kỳ biểu thức chính quy Perl nào, thay vào đó chúng ta có thể truyền trực tiếp giá trị hoặc một từ mà chúng ta muốn thay thế.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

Đầu ra:

Xin chào bò phải không?

Vào/ra tệp Perl

Perl được thiết kế để thao tác các tập tin và hoạt động I/O một cách hiệu quả. Ưu điểm chính của Perl là phân tích tệp và xử lý tệp. Có nhiều hàm và toán tử sẵn có được sử dụng trong quá trình xử lý tệp trong Perl.

Về cơ bản, các thao tác với tệp được thực hiện bằng Perl đều được thực hiện bằng FILEHANDLE. Chúng ta phải xác định FILEHANDLE này trong quá trình mở tệp để đọc hoặc ghi.

Trong hướng dẫn tập lệnh Perl này, bạn sẽ học-

Perl Mở tệp

Chúng ta có thể mở tệp bằng hàm open() có sẵn trong Perl.

open(FILEHANDLE, "filename or complete path of the file");

Bây giờ chúng tôi đã mở một tập tin, bây giờ một câu hỏi được đặt ra. Nó dùng để đọc hay viết?

Tập tin đọc Perl & tập tin ghi Perl

Perl có một số chế độ nhất định cần được sử dụng để đọc, ghi hoặc nối thêm tệp.

Read – open(my $fh,"<filename or complete path of the file"); 
Write – open(my $fh,">filename or complete path of the file");
Append – open(my $fh,">>filename or complete path of the file");

Một số ví dụ về đọc file:

Đọc tệp trong Perl

Hãy xem xét chúng tôi có một tệp Perl có tên file.txt và có vài dòng văn bản trong đó. Chúng ta cần mở tập tin này và in tương tự.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Điều này sẽ in nội dung tập tin trên màn hình đầu ra.

Bây giờ, chúng ta sẽ viết chương trình tạo và ghi dữ liệu vào tệp Perl.

Viết tập tin trong Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Thao tác này sẽ ghi dữ liệu đầu vào được cung cấp trong thời gian chạy và tạo tệp test.txt có dữ liệu đầu vào.

Cách trên sẽ luôn cố gắng tạo một tệp có tên test.txt và ghi dữ liệu đầu vào vào tệp; chúng tôi sẽ viết tương tự để nối thêm tập tin.

Thao tác nối tệp trong Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Chế độ Mô tả Chi tiết

<

Đọc

+<

Đọc và viết

>

Tạo, viết và cắt bớt

+>

Đọc, viết, tạo và cắt bớt

>>

Viết, nối thêm và tạo

+>>

Đọc, viết, nối thêm và tạo

Bây giờ chúng ta phải xem cách đọc, ghi và nối các tệp bằng các ví dụ cơ bản.

Chúng ta sẽ xem thêm một số ví dụ và các chức năng khác giúp hiểu thêm về tệp.

Perl kể

Phương thức này sẽ trả về vị trí hiện tại của FILEHANDLER tính bằng byte nếu được chỉ định nếu không nó sẽ coi dòng cuối cùng là vị trí.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Tìm kiếm Perl

Chức năng tìm kiếm tương tự như lệnh gọi hệ thống fseek. Phương pháp này được sử dụng để định vị con trỏ tệp đến một vị trí cụ thể bằng cách chỉ định các byte theo sau là phần đầu của con trỏ tệp hoặc phần cuối của con trỏ tệp.

seek FH, bytes, WHENCE;

WHENCE là vị trí bắt đầu của con trỏ tập tin. Zero sẽ đặt nó từ đầu tập tin.

Ví dụ: Cho input.txt có một số dữ liệu như “Xin chào, đây là thế giới của tôi”.

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

Đầu ra:

đây là thế giới của tôi

Perl Hủy liên kết

Hủy liên kết được sử dụng để xóa tập tin.

unlink("filename or complete file path");

Xử lý thư mục:

Chúng tôi cũng có thể xử lý các thư mục mà qua đó chúng tôi có thể xử lý nhiều tệp.

Hãy xem cách mở một thư mục. Chúng ta có thể sử dụng các phương thức opendir và readdir.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Điều này sẽ in tất cả các tập tin có sẵn trong thư mục đó.

Kiểm tra tệp Perl và ý nghĩa của chúng

-r

Để kiểm tra xem người dùng/nhóm hiện tại có thể đọc được Tệp/thư mục hay không

-w

Để kiểm tra xem người dùng/nhóm hiện tại có thể ghi Tập tin/thư mục hay không

-x

Để kiểm tra xem người dùng/nhóm hiện tại có thể thực thi được Tệp/thư mục hay không

-o

Để kiểm tra xem Tệp/thư mục có thuộc quyền sở hữu của người dùng hiện tại không

-R

Để kiểm tra xem người dùng/nhóm thực này có thể đọc được Tệp/thư mục hay không

-W

Để kiểm tra xem người dùng/nhóm thực này có thể ghi được tệp/thư mục hay không

-X

Để kiểm tra xem Tệp/thư mục có thể được thực thi bởi người dùng/nhóm thực này không

-O

Để kiểm tra xem Tệp/thư mục có thuộc sở hữu của người dùng thực này không

-e

Để kiểm tra xem tên tệp/thư mục có tồn tại không

-z

Để kiểm tra xem Tệp có tồn tại và có kích thước bằng 0 hay không (luôn sai đối với các thư mục)

-f

Để kiểm tra xem Entry có phải là một tệp đơn giản không

-d

Để kiểm tra xem Entry có phải là một thư mục không

-l

Để kiểm tra xem Entry có phải là liên kết tượng trưng không

-S

Để kiểm tra xem Entry có phải là ổ cắm không

-p

Để kiểm tra xem Entry có phải là một đường ống được đặt tên hay không (“FIFO”)

-b

Để kiểm tra xem Entry có phải là một tệp đặc biệt dạng khối hay không (như đĩa có thể gắn được)

-c

Để kiểm tra xem Entry có phải là tệp ký tự đặc biệt hay không (như thiết bị I/O)

-u

Để kiểm tra xem Tệp hoặc thư mục có được thiết lập không

-g

Để kiểm tra xem Tệp hoặc thư mục có được setgid không

-k

Để kiểm tra xem Tệp hoặc thư mục có đặt bit dính không

-t

Tiêu đề tệp đã cho là TTY (do hàm hệ thống isatty() nên tên tệp không thể được kiểm tra bằng thử nghiệm này)

-T

Để kiểm tra xem Tệp có giống tệp “văn bản” không

-B

Để kiểm tra xem Tệp có giống tệp "nhị phân" không

-M

Để kiểm tra Tuổi sửa đổi (tính bằng ngày) của tệp

-A

Để kiểm tra tuổi truy cập (tính bằng ngày) của tệp

-C

Để kiểm tra tuổi sửa đổi Inode (tính bằng ngày) của tệp

Chương trình con Perl

Chương trình con là gì?

Chương trình con tương tự như các hàm trong các ngôn ngữ lập trình khác. Chúng ta đã sử dụng một số hàm dựng sẵn như print, chomp, chop, v.v. Chúng ta có thể viết các chương trình con của riêng mình trong Perl. Những chương trình con này có thể được viết ở bất kỳ đâu trong chương trình; tốt nhất nên đặt các chương trình con ở đầu hoặc cuối mã.

Chương trình con trong PERL

Ví dụ về chương trình con

sub subroutine_name 
{
	Statements…;    # this is how typical subroutines look like.
}

Bây giờ chúng ta đã biết cách viết một chương trình con, vậy làm cách nào để truy cập nó?

Chúng ta cần truy cập hoặc gọi một chương trình con bằng cách sử dụng tên chương trình con có tiền tố '&'.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Truyền tham số Perl & đối số Perl

Các chương trình con hoặc hàm perl được viết để đặt mã có thể tái sử dụng vào đó. Hầu hết các mã có thể tái sử dụng đều yêu cầu các tham số được truyền vào chương trình con. Ở đây, chúng ta sẽ tìm hiểu cách truyền đối số cho chương trình con.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

Đầu ra:

3 là giá trị được thông qua

@_ là một biến mảng đặc biệt lưu trữ các đối số được truyền cho các chương trình con.

Perl Shift

Chúng ta cũng có thể sử dụng từ khóa 'shift' để dịch chuyển từng tham số thành một biến hoặc $_[0],$_[1]… là một phần tử riêng lẻ của mảng @_

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

Đầu ra:

xin chào đã qua

Các chương trình con thường được sử dụng trong lập trình hướng đối tượng và cả ở những nơi mà bạn có thể đặt nhiều mã có thể tái sử dụng hơn.

Chức năng chính của chương trình con là thực hiện một số tác vụ và trả về kết quả của mã có thể sử dụng lại.

Hướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ

Chúng ta có thể trả về một giá trị từ chương trình con bằng từ khóa return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

Đầu ra:

11

$result sẽ giữ giá trị của $a và $b được thêm vào.

Chúng ta cũng có thể chuyển trực tiếp các giá trị băm và mảng vào chương trình con.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

Đầu ra:

1a2b

Chúng ta cũng có thể trả về một hàm băm hoặc một mảng.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

Đầu ra:

Bên trong quy trình con2b1aSau quy trình con call2b1a

Định dạng Perl

Perl có một cơ chế mà chúng ta có thể sử dụng để tạo báo cáo. Sử dụng tính năng này, chúng ta có thể tạo báo cáo chính xác theo cách chúng ta muốn trong khi in trên màn hình Output hoặc trong một tệp. Một định dạng đơn giản có thể được viết bằng các hàm printf hoặc sprintf có sẵn trong Perl.

printf "%05d\n", 30;

Điều này sẽ bao gồm các số 30 đứng trước số 5, tổng cộng có XNUMX chữ số. Có thể sử dụng tương tự cho sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Sử dụng printf và sprintf, chúng ta có thể có được hầu hết các định dạng Perl. Trong trường hợp báo cáo, sẽ khó để triển khai.

Định dạng Perl

Ví dụ về một Báo cáo:

================================================== =========================
Tên Địa chỉ Tuổi Điện thoại
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

Trên đây là ví dụ báo cáo rằng chúng ta cần in theo cùng một cách trong Perl. Điều này có thể đạt được bằng cách sử dụng perl printf và perl sprintf. Nó có thể được triển khai hiệu quả bằng cách sử dụng format.

Một định dạng có thể được khai báo theo cách dưới đây.

format FORMATNAME=FORMATLIST.

Ở đây, chúng tôi sẽ sử dụng một phương pháp ghi cụ thể để in dữ liệu lên màn hình đầu ra hoặc vào tệp.

Mô tả Chi tiết

@

Được sử dụng để thể hiện sự bắt đầu của người giữ trường

>

Căn lề phải của văn bản

<

Căn lề trái của văn bản

|

Căn giữa

#

Số nếu có nhiều # được cung cấp. Giả sử như một nhận xét nếu được cung cấp một #

.

Dấu thập phân

^

Phần bắt đầu của trình giữ trường cũng có thể được sử dụng cho nhiều dòng và cả cho ngắt dòng

~

Dòng phải trống nếu biến trống

@*

Nhiều dòng.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Thực thi mã để xem đầu ra.

Chúng tôi đang sử dụng ký hiệu @ để chỉ định phần bắt đầu của phần giữ trường hoặc chuỗi, '<' mỗi ký tự.

Chúng tôi đang sử dụng STDOUT để in trên đầu ra tiêu chuẩn. Chúng ta có thể thay đổi điều này thành trình xử lý tệp mà chúng ta đang sử dụng để ghi dữ liệu vào tệp.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Chúng ta có thể thay thế '<' thành '>' hoặc '|' để thay đổi căn chỉnh của văn bản.STDOUT_TOP được sử dụng để thiết kế tiêu đề của định dạng. Chúng ta cũng có thể sử dụng tương tự với trình xử lý tệp bằng cách sử dụng FH_TOP( FH là trình xử lý tệp). Điều này sẽ xuất định dạng cho tệp mà chúng ta đang làm việc TRÊN.

Tiêu chuẩn mã hóa Perl

Mỗi lập trình viên sẽ có ý thức viết mã riêng theo những tiêu chuẩn nhất định; những tiêu chuẩn này phải đủ quen thuộc để lập trình viên khác có thể hiểu và hỗ trợ mã đúng cách.

Tiêu chuẩn mã hóa trong Perl

Tiêu chuẩn mã hóa trong Perl

Viết code thì đơn giản và dễ dàng. Vấn đề phát sinh khi cần phải bảo trì ở các giai đoạn sau. Cần tuân thủ các hướng dẫn và tiêu chuẩn mã hóa phù hợp khi viết code. Perl cũng định nghĩa một số tiêu chuẩn nhất định sẽ hữu ích cho các lập trình viên khi viết code. Nên tải 'strict' và 'warnings module' khi viết code. Mỗi module này đều có tầm quan trọng riêng. Strict sẽ yêu cầu chúng ta khai báo biến trước khi sử dụng và cũng sẽ cho biết liệu có bất kỳ từ nào không có trong code của bạn hay không. Ngoài ra, module Warnings có thể được sử dụng bằng cách truyền tùy chọn '-w' cho trình thông dịch Perl trong shebang. Warnings sẽ in ra màn hình đầu ra.

#!/usr/bin/perl –w

Dưới đây là một số danh sách các tiêu chuẩn.

  • Sử dụng mô-đun 'nghiêm ngặt' và 'cảnh báo'.
  • Xóa biến không được sử dụng.
  • Tên biến phải dễ hiểu đối với người dùng khác. Ví dụ: $name, @fileData, v.v.
  • Tài liệu là cần thiết trong khi mã hóa một tập lệnh.
  • Không mã hóa cứng bất kỳ giá trị nào, thay vào đó hãy cố gắng tìm nạp các giá trị đó một cách linh hoạt hoặc yêu cầu người dùng nhập trong khi chạy. (Đường dẫn tệp, Tên tệp).
  • Tối đa hóa việc tái sử dụng mã. Hãy thử đặt mã có thể sử dụng lại vào các chương trình con.
  • Có nghĩa là tên đầy đủ nên được đặt cho các chương trình con.
  • Các chương trình con cần được viết với các nhận xét và tài liệu phù hợp.
  • Luôn khởi tạo các biến.
  • Luôn kiểm tra mã trả về cho các cuộc gọi hệ thống. Việc mở file có thể xảy ra hoặc không, việc có return code tại đây sẽ hiển thị trạng thái lỗi nếu file không tồn tại.

    Ví dụ: mở(FH,

  • Chương trình con phải luôn trả về một giá trị.
  • Mở xoăn trong cùng một dòng.
  • BLOCK dòng đơn có thể được đặt trong một dòng duy nhất có đường cong.
  • Sử dụng nhãn trong LOOPS, bạn có thể dễ dàng thoát khỏi vòng lặp bất cứ khi nào cần thiết.
  • Sử dụng dấu gạch dưới trong khi các cụm từ dài được viết dưới dạng tên biến hoặc chương trình con.
  • Hãy thử sử dụng biểu thức chính quy đơn giản trong khi viết mã.

Ví dụ hoàn hảo với các tiêu chuẩn mã hóa:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Xử lý lỗi Perl

Ngoại lệ là gì?

Ngoại lệ là một sự kiện xảy ra trong quá trình thực thi chương trình sẽ tạm dừng hoặc chấm dứt chương trình của bạn.

Xử lý lỗi

Xử lý lỗi là điều mà mọi lập trình viên phải quan tâm trong quá trình lập trình. Perl cũng cung cấp các kỹ thuật xử lý lỗi mà chúng ta có thể bẫy lỗi và xử lý chúng một cách phù hợp.

Xử lý lỗi trong Perl

Xử lý lỗi trong Perl

Có nhiều cách để kiểm tra lỗi trong chương trình. Chúng ta cần kiểm tra mã trả về của hàm mà chúng ta đang sử dụng mã. Nếu chúng ta có thể xử lý các mã trả về đó một cách chính xác thì hầu hết việc xử lý lỗi đều có thể đạt được.

Điều gì sẽ trả về trong trường hợp cuộc gọi hệ thống?

Trong trường hợp cuộc gọi hệ thống, trạng thái trả về sẽ được lưu trữ trong hai biến đặc biệt $? Và $!

$! – Thao tác này sẽ bắt số lỗi hoặc số lỗi liên quan đến thông báo lỗi.

$? – Cái này sẽ giữ hàm trạng thái trả về system().

Sử dụng toán tử Perl hoặc Logic

Chúng ta có thể sử dụng logic hoặc toán tử để xử lý lỗi trong khi sử dụng lệnh gọi hệ thống.

ví dụ:

open(FH,"<test.txt");

Điều này sẽ mở tệp ở chế độ đọc nếu tệp tồn tại.

Nếu tập tin bị thiếu thì sao?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Đánh giá Perl

Hàm Eval có thể xử lý các lỗi nghiêm trọng, lỗi thời gian biên dịch, lỗi thời gian chạy và những lỗi khiến mã của bạn bị chấm dứt tại một thời điểm nào đó.

Hàm Perl Eval có thể có một khối mã hoặc một biểu thức. Evals coi mọi thứ được đặt trong đó là một chuỗi.

Hãy xem xét tình huống gọi một chương trình con không được xác định trong tập lệnh. Trong trường hợp này, tập lệnh kết thúc với thông báo “chương trình con không xác định &XYZ, lỗi này có thể được xử lý trong hàm eval.

Có nhiều cách sử dụng khối evals; một cách sử dụng như vậy là khi chúng ta muốn tải mô-đun dành riêng cho hệ điều hành trong thời gian chạy.

Ví dụ: Chia cho 0 gây ra lỗi nghiêm trọng; để xử lý việc này, chúng ta có thể đặt mã vào khối evals.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

Đầu ra:

lỗi cú pháp tại C:\Users\XYZ\Text.pl dòng 8, gần “)

{“

Việc thực thi C:\Users\XYZ\Text.pl bị hủy do lỗi biên dịch.

Ví dụ: eval sử dụng câu lệnh perl die.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

Đầu ra:

Bị bắt: Chết trong bài kiểm tra phụ

Sử dụng Perl Hãy thử

Perl không hỗ trợ các khối mã thử, bắt và cuối cùng như các ngôn ngữ lập trình khác. Chúng ta vẫn có thể sử dụng chúng bằng cách tải mô-đun Perl bên ngoài.

sử dụng Thử::Tiny;

Bằng cách sử dụng điều này, chúng tôi có thể đặt mã của bạn vào khối thử và phát hiện lỗi trong khối cảnh báo.

Thay cho $@ được sử dụng trong eval Try::Tiny sử dụng $_.

# xử lý lỗi bằng bộ xử lý bắt

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Sử dụng cuối cùng.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

Đầu ra:

foo tại dòng C:\Users\XYZ\Text.pl 4.

Chúng ta có thể sử dụng thử, bắt và cuối cùng theo cách này.

thử { # câu lệnh }

bắt {# câu lệnh }

cuối cùng là { # câu lệnh };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Đầu ra:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

Đầu ra:

Lập trình PerlSocket

Ổ cắm là gì?

Hướng dẫn PERL cho người mới bắt đầu - Hướng dẫn đầy đủ

Ổ cắm là phương tiện mà qua đó hai máy tính có thể tương tác trên mạng bằng cách sử dụng địa chỉ và cổng mạng.

Giả sử A (Máy chủ) và B (Máy khách) là hai hệ thống phải tương tác với nhau bằng cách sử dụng Ổ cắm để chạy một số chương trình.

Để thực hiện điều này, chúng ta cần tạo các socket ở cả A (Máy chủ) và B (Máy khách), A sẽ ở trạng thái nhận và B sẽ ở trạng thái gửi.

Một máy chủ):

Tại đây, máy chủ mong muốn nhận được kết nối từ B (Client) và thực hiện một số tác vụ rồi gửi kết quả lại cho B (Client). Khi chúng tôi thực thi mã, hệ điều hành trong A sẽ cố gắng tạo một ổ cắm và liên kết một cổng với ổ cắm đó. Sau đó nó sẽ lắng nghe từ người gửi là B.

B (Khách hàng).

Tại đây, khách hàng muốn gửi một số chương trình từ hệ thống của mình đến A (Máy chủ) để xử lý. Khi chúng tôi thực thi mã, hệ điều hành trong B cố gắng tạo một ổ cắm để liên lạc với A (Máy chủ), B phải chỉ định địa chỉ IP và số cổng của A mà B muốn kết nối.

Nếu việc này suôn sẻ, cả hai hệ thống sẽ tương tác để trao đổi thông tin qua một cổng. Perl cũng hỗ trợ lập trình socket.

Perl có một API gốc để có thể triển khai các ổ cắm thông qua đó. Để làm cho việc này trở nên dễ dàng, có nhiều mô-đun CPAN mà chúng tôi sử dụng để viết các chương trình socket.

Hoạt động của máy chủ:

  • Tạo ổ cắm
  • Liên kết ổ cắm với địa chỉ và cổng
  • Nghe ổ cắm trên địa chỉ cổng đó
  • Chấp nhận các kết nối máy khách cố gắng kết nối bằng cổng và IP của máy chủ
  • Thực hiện các hoạt động

Khách hàng Operaý kiến:

  • Tạo ổ cắm
  • Kết nối với Máy chủ bằng địa chỉ cổng của nó
  • Thực hiện các hoạt động

Máy khách-Máy chủ Operacác chức năng trong Perl

socket.io

Đây là một mô-đun dành cho lập trình socket, dựa trên lập trình hướng đối tượng. Mô-đun này không hỗ trợ loại mạng INET được sử dụng trong mạng.

IO::Socket::INET:

Mô-đun này hỗ trợ miền INET và được xây dựng dựa trên IO::Sockets. Tất cả các phương thức có sẵn trong IO::Sockets đều được kế thừa trong mô-đun INET.

Máy khách và Máy chủ sử dụng giao thức TCP:

TCP là giao thức hướng kết nối; chúng tôi sẽ sử dụng giao thức này để lập trình socket.

Trước khi tiếp tục, hãy xem cách chúng ta có thể tạo một đối tượng cho mô-đun IO::Socket::INET và tạo một socket.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

Phương thức mới trong mô-đun IO::Socket::INET chấp nhận hàm băm làm tham số đầu vào cho chương trình con. Hàm băm này được xác định trước và chúng ta chỉ cần cung cấp các giá trị cho các khóa mà chúng ta muốn sử dụng. Có một danh sách các khóa được sử dụng bởi hàm băm này.

ngang hàng

Địa chỉ máy chủ từ xa

máy chủ ngang hàng

Từ đồng nghĩa với PeerAddr

Cổng ngang hàng

Cổng hoặc dịch vụ từ xa

LocalAddr

Địa chỉ liên kết máy chủ cục bộ

localhost

Từ đồng nghĩa với LocalAddr

Cổng cục bộ

Cổng liên kết máy chủ cục bộ

Proto

Tên giao thức (hoặc số)

Kiểu

Loại ổ cắm

Thanh

Kích thước hàng đợi để nghe

Tái sử dụngAddr

Đặt SO_REUSEADDR trước khi ràng buộc

Tái sử dụng

Đặt SO_REUSEADDR trước khi ràng buộc

Cổng tái sử dụng

Đặt SO_REUSEPORT trước khi ràng buộc

Phát sóng

Đặt SO_BROADCAST trước khi liên kết

Timeout

Giá trị thời gian chờ cho các hoạt động khác nhau

MultiHomed

Hãy thử tất cả các địa chỉ cho máy chủ multihomed

Chặn

Xác định xem kết nối có ở chế độ chặn không

Máy chủ.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Khách hàng.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Lưu ý:

Trong lập trình socket, chúng ta sẽ phải thực thi Server.pl trước rồi đến client.pl riêng lẻ trong các dấu nhắc lệnh khác nhau nếu chúng ta đang chạy trên máy chủ cục bộ.

Mô-đun và gói Perl là gì

Mô-đun và Gói có liên quan chặt chẽ với nhau và độc lập. Gói: Gói Perl còn được gọi là không gian tên và có tất cả các biến duy nhất được sử dụng như hàm băm, mảng, vô hướng và chương trình con. Mô-đun: Mô-đun là tập hợp mã có thể tái sử dụng, trong đó chúng ta viết các chương trình con trong đó. Các mô-đun này có thể được tải trong các chương trình Perl để sử dụng các chương trình con được viết trong các mô-đun đó.

Mô-đun Perl là gì?

Các mô-đun tiêu chuẩn sẽ được cài đặt trong quá trình cài đặt Perl trên bất kỳ hệ thống nào. CPAN: Perl toàn diện Archive Network – Kho lưu trữ toàn cầu các mô-đun Perl. Mô-đun Perl tùy chỉnh của riêng chúng tôi có thể được chúng tôi viết. Về cơ bản, Một mô-đun khi được tải trong bất kỳ tập lệnh nào sẽ xuất tất cả các biến và chương trình con toàn cục của nó. Các chương trình con này có thể gọi trực tiếp như thể chúng được khai báo trong chính tập lệnh. Mô-đun Perl có thể được viết bằng phần mở rộng .pm cho tên tệp Ví dụ: Foo.pm. Một mô-đun có thể được viết bằng cách sử dụng 'gói Foo' ở đầu chương trình.

Mô-đun Perl cơ bản:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Không có đầu ra

Để sử dụng mô-đun Perl này, chúng ta phải đặt nó vào thư mục hiện đang làm việc.

Chúng ta có thể tải mô-đun Perl bằng cách sử dụng require hoặc use ở bất kỳ đâu trong mã. Sự khác biệt chính giữa yêu cầu và sử dụng là yêu cầu tải mô-đun trong thời gian chạy và sử dụng tải trong thời gian biên dịch.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Ở đây, trong ví dụ trên, chúng ta đang truy cập các chương trình con bằng tên mô-đun đủ điều kiện.

Chúng tôi cũng có thể truy cập gói bằng cách sử dụng 'sử dụng Số học'.

Nhà xuất khẩu:

Mô-đun này có chức năng mặc định là nhập phương thức.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

Mảng @EXPORT có thể được sử dụng để chuyển danh sách các biến và chương trình con mà theo mặc định sẽ được xuất cho người gọi Mô-đun.

Mảng @EXPORT_OK có thể được sử dụng để chuyển danh sách các biến và chương trình con sẽ được xuất theo yêu cầu, trong đó người dùng phải chỉ định trong khi tải mô-đun.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

Theo mặc định, chương trình con thêm sẽ được xuất. Phương thức trừ sẽ không được xuất nếu nó không được chỉ định trong khi tải mô-đun.

Lập trình hướng đối tượng trong Perl

Trong phần này, chúng ta sẽ tìm hiểu cách tạo các Mô-đun hướng đối tượng Perl. Đầu tiên chúng ta hãy xem đối tượng là gì? Một đối tượng là một thực thể mà chúng ta có thể truy cập, sửa đổi và định vị một số dữ liệu trong bất kỳ mô-đun Perl nào. Điều này không gì khác hơn là làm cho gói Perl, các biến và chương trình con hiện có của bạn hoạt động giống như lớp, đối tượng và phương thức tham chiếu đến các Ngôn ngữ lập trình khác.

Tạo lớp

Chúng ta đã biết cách tạo mô-đun từ chủ đề trước. Mục đích của lớp là lưu trữ các phương thức và biến. Một Mô-đun Perl sẽ có các chương trình con là các phương thức. Chúng ta cần truy cập vào các đối tượng biến và chương trình con đó.

Trình xây dựng Perl

Hàm tạo trong Perl là một phương thức sẽ thực thi và trả về cho chúng ta một tham chiếu có tên mô-đun được gắn thẻ cho tham chiếu đó. Đây được gọi là sự ban phước cho lớp học. Chúng tôi sử dụng một biến cụ thể để ban phước cho một lớp perl, đó là ban phước.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Phương thức mới được sử dụng làm hàm tạo cho một lớp. Hàm tạo này sẽ tạo một đối tượng cho chúng ta và sẽ quay lại tập lệnh đang gọi hàm tạo này.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Ở đây, chúng ta cần hiểu đối tượng được tạo ra như thế nào. Bất cứ khi nào chúng ta cố gắng tạo một đối tượng cho lớp, chúng ta cần sử dụng tên đầy đủ của lớp. Giả sử, nếu lớp Perl nằm ở một số lib\Math\Arithmetic.pm. Và, nếu chúng ta muốn truy cập lớp Perl này từ thư mục lib thì chúng ta phải cung cấp toàn bộ đường dẫn đến lớp trong khi gọi tập lệnh.

sử dụng lib::Math::Số học;

my $obj = lib::Math::Arithmetic->new();

Đây là cách tạo đối tượng trong Perl.

@INC:

Tập lệnh Perl biết mô-đun thư viện tồn tại ở đâu? Perl chỉ biết về thư mục hiện tại của tập lệnh và đường dẫn thư viện sẵn có của Perl. Bất cứ khi nào chúng tôi sử dụng và mô-đun Perl không nằm trong thư mục hiện tại hoặc Đường dẫn thư viện Perl, tập lệnh sẽ luôn bị lỗi. Giới thiệu về @INC, đây là một mảng chứa tất cả các đường dẫn thư mục nơi nó phải tìm các mô-đun Perl. Hãy thử thực hiện lệnh này và xem kết quả sẽ là gì.

perl –e "print @INC"

Điều này sẽ cung cấp một số đầu ra và đó là đường dẫn chứa các Mô-đun lib. Bất cứ khi nào chúng ta sử dụng bất kỳ mô-đun thư viện mới nào, chúng ta cần thông báo cho Perl, trình thông dịch, xem xét vị trí cụ thể nơi có mô-đun Perl.

push(@INC, "PATH TO YOUR MODULE");

Hãy coi đây là dòng mã đầu tiên của bạn. Điều này sẽ yêu cầu thông dịch viên của bạn xem xét Con đường đó. hoặc sử dụng

lib Arithmetic; # List here is your Perl Module location

Công cụ phá hủy Perl

Hàm hủy của một đối tượng theo mặc định được gọi ở cuối và trước khi tập lệnh của bạn thoát. Điều này được sử dụng để tiêu diệt các đối tượng của bạn khỏi bộ nhớ.


Tập lệnh Shell PERL V/s

Giới thiệu về lập trình PERL

  • Lập trình trong Perl không gây ra các vấn đề về tính di động, điều thường gặp khi sử dụng các shell khác nhau trong tập lệnh shell.
  • Xử lý lỗi rất dễ dàng trong Perl
  • Bạn có thể dễ dàng viết các chương trình dài và phức tạp trên Perl do tính rộng lớn của nó. Điều này trái ngược với Shell không hỗ trợ không gian tên, mô-đun, đối tượng, kế thừa, v.v.
  • Shell có ít thư viện có thể tái sử dụng hơn. Không có gì có thể so sánh với CPAN của Perl
  • Shell kém an toàn hơn. Nó gọi các hàm bên ngoài (các lệnh như mv, cp, v.v. tùy thuộc vào shell đang được sử dụng). Ngược lại, Perl thực hiện công việc hữu ích khi sử dụng các hàm bên trong.

Cách PERL được sử dụng trong Kiểm thử tự động hóa

Perl được sử dụng rộng rãi trong tự động hóa. Nó có thể không phải là ngôn ngữ lập trình tốt nhất trên thế giới nhưng nó phù hợp nhất cho một số loại tác vụ nhất định. Hãy thảo luận về việc Perl được sử dụng ở đâu và tại sao Kiểm tra tự động hóa.

Kiểm tra lưu trữ

Kiểm tra lưu trữ bằng Perl

Lưu trữ là gì? Dữ liệu được lưu trữ trong Tệp.

Giả sử, chúng ta có một bộ nhớ liên quan Trường hợp thử nghiệm nơi chúng tôi phải ghi dữ liệu trên một phân vùng, đọc nó và xác minh rằng dữ liệu được ghi chính xác.

Việc này có thể được thực hiện thủ công, nhưng người kiểm tra thủ công có thể thực hiện điều tương tự 10000 lần không? Nó sẽ là một cơn ác mộng! Chúng ta cần tự động hóa

Công cụ tốt nhất để tự động hóa mọi thứ liên quan đến lưu trữ là Perl vì Kỹ thuật xử lý tệp của nó, ĐĂNG KÝ và phân tích tệp mạnh mẽ, tiêu tốn ít thời gian thực hiện nhất so với các ngôn ngữ lập trình khác.

Tại sao chúng ta cần kiểm tra việc lưu trữ? Hãy nghĩ đến các Trung tâm dữ liệu lớn, nơi dữ liệu sẽ liên tục chảy từ hệ thống này sang hệ thống khác với hàng nghìn bản ghi được lưu trữ mỗi giây. Việc kiểm tra tính mạnh mẽ của cơ chế lưu trữ như vậy là điều cần thiết.

Nhiều hãng như HP, Dell, IBM và nhiều nhà sản xuất máy chủ sử dụng Perl làm giao diện để kiểm tra chức năng trong miền Lưu trữ và Mạng. NetApp là một trong những công ty hoạt động hoàn toàn trên Storage và sử dụng Perl làm ngôn ngữ lập trình để tự động hóa các trường hợp thử nghiệm.

Nếu bạn quan tâm đến Tự động hóa Perl thì nên tìm hiểu về Lưu trữ & Mạng Concepts.

Kiểm tra máy chủ và mạng:

Kiểm tra máy chủ và mạng bằng Perl

Kiểm tra máy chủ và mạng bằng Perl

PERL được sử dụng rộng rãi trong giám sát hiệu suất và thời gian hoạt động của máy chủ.

Hãy xem xét một trung tâm dữ liệu có 100 máy chủ (máy chủ). Bạn được yêu cầu kết nối với từng máy chủ, thực hiện một số lệnh từ xa. Bạn cũng muốn khởi động lại hệ thống và kiểm tra khi nào nó trực tuyến trở lại.

Thực hiện thủ công nhiệm vụ này cho cả 100 máy chủ sẽ là một cơn ác mộng. Nhưng chúng ta có thể dễ dàng tự động hóa việc này bằng PERL

Thiết kế các bước để đạt được mục tiêu tự động hóa trên bằng cách sử dụng PERL

  1. Lấy thông tin đầu vào từ tệp về thông tin máy chủ như (IP, Tên người dùng và Mật khẩu).
  2. Sử dụng Net::SSH2 để kết nối với từng hệ thống và thiết lập kênh để thực thi các lệnh.
  3. Thực thi tập hợp các lệnh được yêu cầu, ví dụ: ls, dir, ifconfig,ps, v.v.
  4. Khởi động lại hệ thống.
  5. Đợi 10 phút để hệ thống hiện lên.
  6. Ping hệ thống bằng mô-đun Net::Ping và in trạng thái.

Chúng tôi sẽ mã hóa kịch bản trên.

Hãy lấy một tệp có tên input.txt để lưu trữ thông tin đầy đủ về tất cả các máy chủ mà chúng ta cần kết nối và thực thi lệnh.

Đầu vào.txt

Mật khẩu gốc 192.168.1.2

Mật khẩu gốc 192.168.1.3

gốc 192.168.1.4 gốc123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Kiểm tra web

Perl không chỉ bị giới hạn trong thử nghiệm Lưu trữ & Mạng. Chúng tôi cũng có thể thực hiện kiểm tra dựa trên Web bằng PERL. Cơ giới hóa WWW là một mô-đun được sử dụng cho thử nghiệm web. Về cơ bản, nó sẽ không khởi chạy bất kỳ trình duyệt nào để kiểm tra chức năng của ứng dụng web mà sử dụng mã nguồn của các trang html.

Chúng tôi cũng có thể thực hiện kiểm tra dựa trên trình duyệt bằng cách sử dụng Selenium IDE, RC, trình điều khiển Web. Perl được hỗ trợ cho Selenium.

\N"; #this sẽ giữ chuỗi còn lại sau khi khớp mẫu xong.
in "