Xu li chuoi trong Perl.

Một phần của tài liệu CAC LENH TRONG LINUX pot (Trang 28 - 30)

Trong bài viết cuối cùng của chúng tôi, chúng tôi nói chuyện về các yếu tố cốt lõi của Perl: các biến (vô hướng, mảng, và hashes), các nhà khai thác toán học và một số kiểm soát dòng chảy cơ bản (để báo cáo) . Bây giờ là lúc để tương tác với thế giới. Trong phần này, chúng tôi sẽ thảo luận làm thế nào để cắt và dice chuỗi, làm thế nào để chơi với các tập tin và làm thế nào để xác định các chức năng của riêng bạn. Nhưng trước tiên, chúng tôi sẽ thảo luận về khái niệm cốt lõi của ngôn ngữ Perl: điều kiện và so sánh các nhà khai thác so sánh là một trong những yếu tố quan trọng của Perl mà chúng ta bỏ qua trong bài viết trước: toán tử so sánh. Giống như tất cả các ngôn ngữ lập trình tốt, Perl cho phép bạn đặt câu hỏi như "con số này lớn hơn con số đó" hoặc "hai chuỗi giống nhau''và làm những việc khác nhau tùy thuộc vào câu trả lời . Khi bạn đang đối phó với những con số, Perl có bốn nhà khai thác quan trọng: <,>, == và =. Đây là những `` ít hơn "," lớn hơn "," bằng "và `` không bằng các nhà khai thác". (Bạn cũng có thể sử dụng <=, "ít hơn hoặc bằng", và> =, "lớn hơn hoặc bằng.) Bạn có thể sử dụng các nhà khai thác cùng với một trong những từ khóa có điều kiện Perl, chẳng hạn như khi và trừ khi. Cả hai của các từ khóa này có một điều kiện mà Perl sẽ kiểm tra, và một khối mã trong dấu ngoặc nhọn Perl sẽ chạy nếu kiểm tra các công trình . Hai từ này chỉ làm việc như tương đương tiếng Anh của mình - một bài kiểm tra nếu thành công nếu tình trạng này hóa ra là đúng, và một bài kiểm tra trừ khi thành công nếu tình trạng này hóa ra là sai lầm: ($ year_according_to_computer == 1900) { print "Y2K đã phải chịu số phận chúng tôi tất cả các Tất cả mọi người hợp chất \ n " ;} trừ khi ($ bank_account> 0 ) {in "Tôi đã phá vỡ \ n " ;} Hãy cẩn thận sự khác biệt giữa = và ==! Một dấu bằng có nghĩa là "chuyển nhượng", hai có nghĩa là "so sánh cho" bình

đẳng.Đây là một lỗi phổ biến xấu xa: if ($ a = 5) { print "Điều này làm việc - nhưng không làm những gì bạn muốn \ n"; } Thay vì thử nghiệm cho dù $ a bằng năm, bạn đã thực hiện $ a bằng năm và clobbered giá trị cũ của nó. (Trong một bài báo sau, chúng tôi sẽ thảo luận một cách chắc chắn rằng lỗi này sẽ không xảy ra trong chạy mã.) Cả hai khi và trừ khi

có thể được theo sau bởi một tuyên bố khác và khối mã, mà thực hiện nếu thử nghiệm của bạn không thành công. Bạn cũng có thể sử dụng elsif chuỗi với nhau một loạt các nếu báo cáo : ($ a == 5) {print "Đó là năm \ n" ;} elsif ($ a == 6) {print "Đó là sáu \ n! " } else { in "Đó là một cái gì đó khác \ n ";} trừ khi ($ bánh eq ' táo ') {print "EW, tôi không giống như $ bánh bánh có hương vị \ n " ;} else {print "của Apple! ! yêu thích của tôi \ n

"; } trong khi và cho đến khi hai từ khóa phức tạp hơn một chút trong khi và cho đến khi. Cả hai đều có một điều kiện và một khối mã, giống như khi và trừ khi, nhưng họ hành động như vòng tương tự để cho. Perl kiểm tra điều kiện, chạy các khối mã và chạy nó trên một lần nữa cho đến khi điều kiện là đúng (đối với một vòng lặp trong khi) hoặc sai (đối với một vòng lặp cho đến khi) Hãy nhìn vào đoạn mã sau và cố gắng đoán những gì sẽ làm trước khi đọc tiếp tục: $ a = 0; trong khi ($ a = 3) { $ a + +; in "Đếm đến $ a. .. \ n"; } cho đến khi ($ a == 0) { $ a - in "Đếm đến $ a. .. \ n"; } Đây là những gì bạn nhìn thấy khi bạn chạy chương trình này: Tính đến 1 ... Đếm đến 2 ... Đếm đến 3 .. đếm ngược đến 2 ... Đếm xuống tới 1 ... Đếm đến 0 ... so sánh chuỗi Vì vậy, đó là làm thế nào bạn so sánh số.Bây giờ, những gì về chuỗi? Chuỗi điều hành so sánh phổ biến nhất là eq, các xét nghiệm cho chuỗi bình đẳng - đó là, cho dù hai chuỗi có cùng giá trị. Hãy nhớ rằng các cơn đau là do khi bạn kết hợp = và == ?Vâng, bạn cũng có thể kết hợp == và eq. Đây là một trong vài trường hợp mà nó không quan trọng cho dù Perl là xử lý một giá trị như là một chuỗi hoặc một số . Hãy thử mã này : $ yes_no = "không" ; if ($ yes_no == "yes") {print "Bạn nói có \ n" ; } Tại sao mã này nghĩ rằng bạn nói có ? Hãy nhớ rằng Perl tự động

chuyển đổi chuỗi số bất cứ khi nào nó là cần thiết, các nhà điều hành == có nghĩa rằng bạn đang sử dụng mã số, Perl để chuyển đổi các giá trị của $ yes_no (`` không'') với số 0, và `` có '' số 0. Kể từ khi làm xét nghiệm này bình đẳng công trình (0 là bằng 0), nếu chặn được chạy. Thay đổi điều kiện yes_no eq "có", và nó sẽ làm những gì cần Những điều có thể làm việc theo cách khác, quá . Số năm là số lượng bằng chuỗi "5", để so sánh chúng với == công trình. Nhưng khi bạn so sánh năm và "5" với eq, Perl sẽ chuyển đổi số chuỗi "5" đầu tiên, và sau đó hỏi xem hai chuỗi có cùng giá trị. Vì họ không, và so sánh eq không thành công. Đoạn mã này sẽ in bình đẳng Numeric, nhưng không dây bình đẳng: $ a = 5, nếu ($ a == "5") {print "Số bình đẳng \ n";} if ($ a eq "5") {print "String bình đẳng \ n";} vui vẻ với chuỗi Bạn thường sẽ muốn thao tác chuỗi: Phá vỡ chúng thành những miếng nhỏ hơn, đặt chúng lại với nhau và thay đổi nội dung của họ.Perl cung cấp ba chức năng mà làm cho chuỗi thao tác dễ dàng và vui vẻ:. Substr (), chia () và tham gia () Nếu bạn muốn lấy một phần của một chuỗi (nói, bốn nhân vật hoặc một đoạn dài 10 ký tự từ giữa) , sử dụng hàm substr (). Phải mất hoặc hai hoặc ba thông số: chuỗi bạn muốn nhìn vào vị trí ký tự bắt đầu (ký tự đầu tiên là vị trí 0) và số lượng của các nhân vật để lấy . Nếu bạn bỏ ra số ký tự, bạn sẽ lấy tất cả mọi thứ kết thúc của chuỗi $ a = "Chào mừng bạn đến với Perl \ n!"; in substr ($ a, 0, 7), "Chào mừng" in substr ($ a, 7); # "để Perl \ n" Một điều gọn gàng và thường bị bỏ qua về substr () là bạn có thể sử dụng một vị trí nhân vật tiêu cực. Điều này sẽ lấy một

chuỗi con bắt đầu với nhiều nhân vật từ cuối của chuỗi $ a = "Chào mừng bạn đến với Perl \ n" ; in substr ($ a, -6, 4), "Perl "(Hãy nhớ rằng bên trong đôi dấu ngoặc kép, \ n đại diện cho nhân vật mới ). Bạn cũng có thể thao tác các chuỗi bằng cách sử dụng substr () để gán một giá trị mới cho một phần của nó. Một thủ thuật hữu ích là sử dụng một chiều dài không chèn các ký tự thành một chuỗi : $ a = "Chào mừng bạn đến với Java \ n" ; substr ($ a, 11, 4) = "Perl"; # $ a bây giờ là "Chào mừng bạn đến với Perl \ n "; substr ($ a, 7, 3) = ""; # ... "Chào mừng Perl \ n"; substr ($ a, 0, 0) = "Hello."; # ... "Xin chào Chào mừng Perl \ n"; Tiếp theo, hãy nhìn vào chia (). Chức năng này phá vỡ một chuỗi và trả về một danh sách của các mảnh . chia () thông thường phải mất hai tham số: một biểu thức chính quy để phân chia các chuỗi và chuỗi bạn muốn chia. (Chúng tôi sẽ thảo luận về các biểu thức thông thường chi tiết hơn trong phần tiếp theo của loạt bài này, cho thời điểm này, chúng tôi sẽ chỉ sử dụng một không gian Lưu ý cú pháp đặc biệt cho một biểu thức chính quy: / /..) Các nhân vật bạn chia sẽ không hiển thị trong bất kỳ danh sách các yếu tố $ a = ". Xin chào Chào mừng Perl \ n" ; @ a = split (/ / $ a); # Ba mục: "Hello", "Chào mừng", "Perl \ n " Bạn cũng có thể chỉ định một tham số thứ ba: số lượng tối đa các mặt hàng để đưa vào danh sách của bạn . Chia sẽ ngừng ngay sau khi danh sách của bạn có đó nhiều mặt hàng: $ a = "Hello Perl \ n"; @ a = split (/ / $ a, 2), Hai mặt hàng: "Xin chào", "Chào mừng Perl \ n!" Tất nhiên, những gì bạn có thể chia nhỏ, bạn cũng có thể tham gia (). Tham gia () chức năng có một danh sách các chuỗi và gắn chúng lại với nhau với một chuỗi quy định giữa mỗi phần tử, mà có thể là một chuỗi rỗng: @ a = ("Hello", "Chào mừng", "Perl \ n"); $ a = tham gia ('', @ a), "Xin chào Chào mừng Perl \ n!"; $ b = tham gia ('và', @ a), "Xin chào và chào mừng và Perl \ n!"; $ c = tham gia (", a); #" Hello.WelcomePerl \ n ";

Một phần của tài liệu CAC LENH TRONG LINUX pot (Trang 28 - 30)

Tải bản đầy đủ (DOCX)

(30 trang)
w