中级Perl第二章习题

2. 4. 1. 习题1 [15 分钟]
写一个程序从命令行取一个文件清单, 然后用grep 把那些文件大小在1000
字节以内的文件找出来。用map 把这个清单里的每个字串前加四个空格并在
字串后面加上换行符。然后输出列表结果。

print map {"    $_
" } grep { -s $_ < 1000 } @ARGV;

2. 4. 2. 练习2 [25 分钟]
写一个程序要求用户输入一个正则表达式的模板。不要以命令行参数形式输入,
要从键盘读取。然后从一些目录中(可以是硬编码的, 如: "/etc" 或
'C:\Windows' )中读取符合模板的文件名。重复这个操作直到用户输入空串。
要屏蔽用户输入的正斜杠("/") , 因为那是Perl 里正则表达式的分隔符;输入的
模板用换行符为分隔。要保证不会因为用户输入了一个错误的正则表达式, 如
括号不匹配之类的, 而导致程序崩溃。

chdir;

while(1){
    print "Please enter a regular expression>";
    chomp(my $regex = <STDIN>);
    last unless ( defined $regex && length $regex ) ;

    print map {"    $_
"} grep {eval {/$regex/} } glob("*.*");


}
原文地址:https://www.cnblogs.com/tjxwg/p/3369543.html