1、如何申请一个 PAUSE 账户?
要获取 PAUSE 账户,访问 http://pause.perl.org/ 并点击 “Request PAUSE account” 链接,填写包含姓名、电子邮箱地址和首选 PAUSE 账户名等基本信息的网络表单。
PAUSE 账户名目前要求为 4 到 9 个字符 (部分旧账户名可能为 3 个字符)。申请将由人工审核以防止机器人和重复账户,通常一两天内会获批。
获批后会拥有一个以 @cpan.org 结尾的与账户名关联的地址。还可以用该地址创建一个 Gravatar 头像。
2、访问网站http://www.intermediateperl.com/,关注该网站的下载部分,下载其中对练习有用的文件存档,以便在之后没有网络连接时也能使用。
按照要求访问网站,关注下载部分并下载对练习有用的文件存档,以保证无网络时也能使用。
3、读取当前目录中的文件列表,并将文件名转换为完整路径规范。不要使用 shell 或外部程序来获取当前目录。可以使用随 Perl 附带的 File::Spec 和 Cwd 模块。在每个路径前打印四个空格,后面跟一个换行符。
以下是两种实现方式的代码示例:
方式一:
use Cwd;
use File::Spec;
my $cwd = getcwd;
foreach my $file ( glob( ".* *" ) ) {
print " ", File::Spec->catfile( $cwd, $file ), "\n";
}
方式二:
use Cwd;
use File::Spec::Functions;
my $cwd = getcwd;
foreach my $file ( glob( ".* *" ) ) {
print " ", catfile( $cwd, $file ), "\n";
}
4、从CPAN安装Business::ISBN模块,并使用它从国际标准书号(9781449393090)中提取组代码和出版商代码。
可以使用以下代码实现:
use Business::ISBN;
my $isbn = Business::ISBN->new( '9781449393090' );
print "ISBN is " . $isbn->as_string . "\n";
print "Country code: " . $isbn->country_code . "\n";
print "Publisher code: " . $isbn->publisher_code . "\n";
5、编写一个程序,从命令行获取文件名列表,使用grep选择大小小于 1000 字节的文件,再用map在这些文件名前添加四个空格并在后面添加换行符,最后打印结果列表。
以下是实现该功能的 Perl 代码:
print map { " $_\n" } grep { -s $_ < 1000 } @ARGV;
这段代码直接从命令行参数 @ARGV 中获取文件名列表,使用 grep 筛选出大小小于 1000 字节的文件,再用 map 对筛选后的文件名进行转换,在文件名前添加四个空格并在后面添加换行符,最后将结果打印出来。
6、编写一个程序,要求用户输入一个模式(正则表达式)。从标准输入读取该数据,而不是从命令行参数获取。报告某个硬编码目录(如“/etc”或“C:\Windows”)中文件名与该模式匹配的文件列表。重复此操作,直到用户输入空字符串而不是模式为止。用户不应输入 Perl 中传统用于分隔模式匹配的斜杠;输入模式由尾随的换行符分隔。确保有缺陷的模式(如括号不匹配的模式)不会导致程序崩溃。
以下是一个满足需求的 Perl 程序示例:
use strict;
use warnings;
use File::Spec;
# 硬编码目录,这里以 /etc 为例
my $directory = '/etc';
while (1) {
print 'Enter a pattern: ';
chomp(my $pattern = <STDIN>);
# 如果用户输入空字符串,退出循环
last if $pattern eq '';
# 尝试编译正则表达式
my $regex = eval { qr/$pattern/ };
if ($@) {
print "Invalid pattern: $@. Please try again.";
next;
}
# 读取目录中的文件
opendir(my $dh, $directory) or die "Can't open $directory: $!";
my @files = readdir($dh);
close

最低0.47元/天 解锁文章
710

被折叠的 条评论
为什么被折叠?



