Mục lục:
- Thu thập các đường duy nhất
- Loại bỏ nhiều dòng trống
- In dòng từ một tập tin theo thứ tự sắp xếp
- In một dãy các đường từ một tập tin
- Đôi khi, bạn có thể bỏ qua các thư mục con trong một thư mục và chỉ tập trung vào các tệp.Bạn có thể sử dụng test file -f để liệt kê tất cả các file trong một thư mục:
- Để sắp xếp, một danh mục thư mục bằng bất cứ thứ gì khác ngoài tên tập tin của nó, chương trình của bạn phải giữ một danh sách các hồ sơ bao gồm tên và các mục khác trong danh sách. Hash là tuyệt vời để sử dụng cho loại danh sách này có hồ sơ với một chìa khóa (tên tập tin) và một giá trị (các thông tin thư mục khác). Chương trình sau tạo một bảng băm liệt kê kích thước của mỗi tệp trong thư mục và sau đó sắp xếp các mục cho đầu ra. (Bạn có thể dễ dàng sửa đổi chương trình này để sắp xếp theo ngày thay vì theo kích cỡ)
- Sắp xếp theo một phần của tên tệp là một quá trình khó khăn hơn so với phân loại theo kích thước tệp hoặc theo thời điểm tệp được sửa đổi. Chương trình sau phá vỡ tên tập tin thành hai phần và sắp xếp theo phần thứ hai. Nếu bạn đang chạy Perl trên hệ thống UNIX hoặc Macintosh, chương trình này chỉ có thể dự đoán được nếu các tên tập tin không có khoảng thời gian hoặc một khoảng thời gian:
- Cần bao giờ một máy tính đơn giản để sử dụng để loại bỏ một số toán học nhanh chóng và bẩn? Chương trình sau đây sử dụng chức năng eval của Perl để in ra các câu trả lời cho bất kỳ phương trình nào bạn nhập vào. Để kết thúc chương trình, hãy nhập một dòng trống. Đây là chương trình tạo máy tính của riêng bạn:
- my @TempList = ();
- Chương trình sau tạo mật khẩu ngẫu nhiên. Tuy nhiên, thay vì sự lộn xộn của những chữ khó nhớ, mật khẩu có thể được ghi nhớ bởi vì chúng xuất hiện theo cặp phụ âm và nguyên âm có thể phát âm.Bằng cách kết hợp với nhau một vài âm tiết có vẻ ngớ ngẩn, bạn có thể tạo các cụm từ vô nghĩa dễ nhớ.
Video: meteor.js by Roger Zurawicki 2025
Một số người tin rằng các chương trình ngắn không tốt cho rất nhiều, nhưng không phải như vậy với Perl. Chỉ cần một vài dòng mã Perl có thể đi một chặng đường dài. Bài viết này liệt kê một số chương trình Perl dành cho thiếu niên, hữu ích.
Thu thập các đường duy nhất
Nếu tệp văn bản của bạn có nhiều dòng trùng lặp và bạn chỉ muốn xem các đường duy nhất, bạn có thể thu thập chúng vào một mảng (trong trường hợp này, nó được gọi là @Unique) với chương trình sau:
mở (IN, "somefile. Txt"); @ Unique = ();
while () {except ($ i {$ _} ++) {push (@Unique, $ _)}}
Bí quyết ở đây là $ i {$ _} ++ trả về 0 lần đầu tiên bạn tạo một cặp khóa-giá trị với $ _ làm khoá, và một số giá trị khác sau đó.
Loại bỏ nhiều dòng trống
Một số tệp văn bản có nhiều dòng trống, liên tục, làm cho chúng khó đọc, đặc biệt trên màn hình nhỏ. Chương trình sau in một tập tin văn bản, nén tất cả các trường hợp của hai hoặc nhiều dòng trống vào một dòng trống.
Lưu ý: Dòng trống có thể có các ký tự khoảng trắng trong đó, chẳng hạn như không gian và các tab nhưng không có ký tự hiển thị được.
mở (IN, "somefile. Txt"); $ PrevBlank = 0;
while () {
if (/ S / or! $ PrevBlank) {print $ _}
$ PrevBlank = / ^ s * $ /;
}
Câu lệnh if trong ví dụ trước là true nếu có các ký tự nonblank trên dòng hoặc nếu dòng trước không phải là trống. Công việc $ PrevBlank cho bạn biết dòng hiện tại có trống, có nghĩa là nó có không hoặc nhiều ký tự khoảng trắng và không có gì khác.
In dòng từ một tập tin theo thứ tự sắp xếp
Thật dễ dàng quên đi chức năng sắp xếp hữu ích của Perl. Chương trình sau đây đọc toàn bộ tập tin vào một mảng, sắp xếp mảng, và in ra kết quả. Ngắn và ngọt, và khá hiệu quả khi khởi động:
open (IN, "somefile. Txt");
in phân loại ();
In một dãy các đường từ một tập tin
Bạn đã bao giờ muốn đọc chỉ một vài dòng từ một tập tin, chứ không phải toàn bộ điều? Chương trình sau chỉ in ra một dãy các dòng. Bạn chạy chương trình với hai đối số: phạm vi bạn muốn và tên tập tin. Ví dụ, nếu bạn đặt tên chương trình của bạn là "showline" và bạn muốn xem các dòng từ 10 đến 20 của tệp tin này. txt, bạn sử dụng dòng lệnh này:
showline 10-20 somefile. txt
Chương trình sau đây in một dải dòng:
mở (IN, $ ARGV [1]) hoặc chết "Không thể đọc $ File. n ";
($ Start, $ Stop) = split (/ - /, $ ARGV [0]);
cho ($ i = 1; $ i <= $ stop; $ i + = 1)
{$ Line =; Ví dụ về các tệp trong thư mục
Đôi khi, bạn có thể bỏ qua các thư mục con trong một thư mục và chỉ tập trung vào các tệp.Bạn có thể sử dụng test file -f để liệt kê tất cả các file trong một thư mục:
foreach $ f () {if (-f $ f) {print "$ fn"}}
Liệt kê một thư mục theo kích cỡ
Để sắp xếp, một danh mục thư mục bằng bất cứ thứ gì khác ngoài tên tập tin của nó, chương trình của bạn phải giữ một danh sách các hồ sơ bao gồm tên và các mục khác trong danh sách. Hash là tuyệt vời để sử dụng cho loại danh sách này có hồ sơ với một chìa khóa (tên tập tin) và một giá trị (các thông tin thư mục khác). Chương trình sau tạo một bảng băm liệt kê kích thước của mỗi tệp trong thư mục và sau đó sắp xếp các mục cho đầu ra. (Bạn có thể dễ dàng sửa đổi chương trình này để sắp xếp theo ngày thay vì theo kích cỡ)
foreach $ f () {$ i {$ f} = -s $ f};
foreach $ k (sắp xếp {$ i {$ b} <= & gt $ i {$ a}} phím% i)
{printf "% 8d% sn", $ i {$ k}, $ k }
Sắp xếp các thư mục theo phần mở rộng
Sắp xếp theo một phần của tên tệp là một quá trình khó khăn hơn so với phân loại theo kích thước tệp hoặc theo thời điểm tệp được sửa đổi. Chương trình sau phá vỡ tên tập tin thành hai phần và sắp xếp theo phần thứ hai. Nếu bạn đang chạy Perl trên hệ thống UNIX hoặc Macintosh, chương trình này chỉ có thể dự đoán được nếu các tên tập tin không có khoảng thời gian hoặc một khoảng thời gian:
foreach $ FullName () {
($ Name, $ Ext) = split /./, $ FullName, 2);
đẩy (@Temp, "$ Extt $ FullName");
}
foreach $ Val (sắp xếp (@Temp)) {
($ Ext, $ FullName) = split (/ t /, $ Val);
in "$ FullNamen";
}
Tạo một máy tính đơn giản
Cần bao giờ một máy tính đơn giản để sử dụng để loại bỏ một số toán học nhanh chóng và bẩn? Chương trình sau đây sử dụng chức năng eval của Perl để in ra các câu trả lời cho bất kỳ phương trình nào bạn nhập vào. Để kết thúc chương trình, hãy nhập một dòng trống. Đây là chương trình tạo máy tính của riêng bạn:
while () {
$ i = $ _; chomp ($ i); trừ khi ($ i) {last}
$ o = eval ($ i); in "Trả lời = $ trên";
}
Khi bạn chạy chương trình, bạn có thể nhập một cái gì đó như sau:
((2 ** 8) + (3 ** 8))
và bạn nhận được kết quả này: > Trả lời = 6817
Randomizing a list
Trong Perl, tạo ra các số ngẫu nhiên rất dễ, nhưng việc ngẫu nhiên hóa thứ tự của mảng không đơn giản. Tuy nhiên, bạn có thể sử dụng chức năng ghép nối để kéo một phần tử ngẫu nhiên từ một mảng và sau đó đặt phần tử vào mảng khác. Chương trình sau đây ngẫu nhiên hóa danh sách @MyList:
my @TempList = ();
while (@MyList)
{push (@TempList, splice (@MyList, rand (@MyList), 1))}
@MyList = @TempList;
Bí quyết ở đây là rand (@MyList) chọn một số từ 0 đến số phần tử trong @MilList, và nối số thay đổi số ngẫu nhiên này với một số nguyên.
Tạo mật khẩu nhớ ngẫu nhiên
Việc cố gắng thuyết phục người dùng máy tính tìm ra mật khẩu không dễ đoán là một trong những công việc khó khăn nhất của quản trị viên hệ thống. Mọi người luôn luôn muốn nhấn mạnh vào việc sử dụng ngày sinh của họ hoặc tên vật nuôi cho mật khẩu - vi phạm an ninh sau đó trở thành trò chơi của trẻ.
Chương trình sau tạo mật khẩu ngẫu nhiên. Tuy nhiên, thay vì sự lộn xộn của những chữ khó nhớ, mật khẩu có thể được ghi nhớ bởi vì chúng xuất hiện theo cặp phụ âm và nguyên âm có thể phát âm.Bằng cách kết hợp với nhau một vài âm tiết có vẻ ngớ ngẩn, bạn có thể tạo các cụm từ vô nghĩa dễ nhớ.
Mỗi âm tiết của mật khẩu có thể đại diện cho một trong 100 số; do đó, một mật khẩu bốn âm tiết đơn, chẳng hạn như
votahubo, là một trong số 100 mật khẩu có thể mà chương trình tạo ra. Có một quản trị viên hệ thống chỉ định các mật khẩu này cung cấp bảo mật hơn cho phép người dùng chọn mật khẩu của chính họ và dễ đoán: in "Nhập số hạt giống:"; $ s =; srand ($ s ^ thời gian);
@ c = split (/ * /, "bcdfghjklmnprstvwxyz");
@ v = split (/ * /, "aeiou");
cho ($ i = 1; $ i <= 4; $ i + = 1)
{print $ c [int (rand (20))], $ v [int (rand (5))] }
Hai dòng đầu tiên của chương trình này khởi tạo hạt giống cho các số ngẫu nhiên, và hai dòng tiếp theo tạo ra danh sách có 20 phụ âm (trừ
q) và 5 nguyên âm của bảng chữ cái. Vòng lặp for chỉ cần in bốn âm tiết.