tailieunhanh - Learning Perl - Giới thiệu qua về Perl part 2

} Bạn hãy c hú ý nhìn vào từ bí mật. Nếu không tìm thấy từ này thì giá trị c ủa $sec retword sẽ là một xâu rỗng, mà ta c ó thể kiểm tra liệu ta có muốn xác định một từ bí mật mặc định c ho ai đó khác không. Đây là c ách xem nó: # $secretword = $words{$name}; #lay tu bi mat #khong thay if ($secretword eq "") { $secretword = "none"; } print "Tu bi mat la gi?"; # Giải quyết định dạng đầu vào thay đổi Nếu đưa vào Jenny L | chop guess while correct ne secretword print Sai roi thu lai di. Tu bi mat la gi guess STDIN chop guess ket thuc cua while Bạn hãy chú ý nhìn vào từ bí mật. Nếu không tìm thấy từ này thì giá trị của secretword sẽ là một xâu rỗng mà ta có thể kiểm tra liệu ta có muốn xác định một từ bí mật mặc định cho ai đó khác không. Đây là cách xem nó . secretword words name lay tu bi mat if secretword eq khong thay secretword none print Tu bi mat la gi . Giải quyết định dạng đầu vào thay đổi Nếu đưa vào Jenny L. Schwartz hay jenny thay vì Jenny thì chương trình sẽ không đưa ra kết quả như mong đợi. Vì toán tử so sánh eq thì lại so sánh đúng sự bằng nhau của từng ký tự một. Ta hãy xem một cách giải quyết cho điều đó. Giả sử tôi muốn tìm bất kì xâu nào bắt đầu với Jenny thay vì chỉ là một xâu bằng Jenny. Tôi có thể làm điều này trong sed hay awk hoặc grep với một biểu thức chính qui-một tiêu bản sẽ xác định ra một tập hợp các xâu sánh đúng. Giống như trong sed hay grep biểu thức chính qui trong Perl để sánh bất kì xâu nào bắt đầu với Jenny là Jenny. Để sánh xâu này với xâu trong name chúng ta dùng toán tử so sánh như sau if name Jenny yes - True else no - False Chú ý rằng biểu thức chính qui được định biên bởi dấu sổ chéo . Bên trong các dấu sổ chéo thì các dấu cách và khoảng trắng là có nghĩa hệt như chúng ở bên trong xâu. Nhưng chúng ta vẫn chưa giải quyết việc lựa chọn jenny hay loại bỏ Jennyy. Để chấp nhận jenny chúng ta thêm tuỳ chọn bỏ qua không xét chữ hoa và chữ thường một chữ i nhỏ được thêm vào sau dấu sổ chéo thứ hai. Để loại bỏ Jennyy ta thêm một đánh dấu đặc biệt định biên từ tương tự với vi và một số bản của grep dưới dạng b trong biểu thức chính qui. Điều này đảm bảo rằng kí tự đi sau chữ y đầu tiên trong biểu thức chính qui không phải là một kí tự a b . Điều này làm thay đổi biểu thức chính qui thành jenny b i có nghĩa là jenny tại đầu xâu không có kí tự hay chữ số nào theo sau và chấp nhận cả hai kiểu chữ hoa thường . Ta có chương trình như sau usr .