25、编写一个程序,其功能类似于 rm 命令,删除命令行中指定的所有文件。(你无需处理 rm 的任何选项)
可以使用Perl语言编写如下程序来实现该功能:
#!/usr/bin/perl
# 获取命令行参数中的文件名列表
my @files = @ARGV;
# 使用unlink操作符删除文件
unlink @files;
将上述代码保存为一个 .pl 文件,例如 rm_like.pl ,然后在命令行中运行该程序并指定要删除的文件,如 perl rm_like.pl file1.txt file2.txt ,即可删除指定的文件。
26、编写一个程序,其功能类似于 mv 命令,将第一个命令行参数指定的文件重命名为第二个命令行参数指定的名称。(不需要处理 mv 命令的任何选项或额外参数。)要考虑目标可能是一个目录的情况;如果是目录,则在新目录中使用原文件的基本名称。
以下是实现该功能的 Perl 程序:
use File::Basename;
use File::Spec;
my($source, $dest) = @ARGV;
if (-d $dest) {
my $basename = basename $source;
$dest = File::Spec->catfile($dest, $basename);
}
rename $source, $dest or die "Can't rename '$source' to '$dest': $!\n";
27、如果你的操作系统支持,编写一个程序来查找当前目录中的任何符号链接,并打印出它们的值(就像使用 ls -l 命令那样:名称 -> 值)。
foreach ( glob( '.* *' ) ) {
my $dest = readlink $_;
print "$_ -> $dest\n" if defined $dest;
}
28、编写一个程序,读取一个数字列表并对其进行数值排序,然后将排序后的列表以右对齐的列形式输出。用以下示例数据进行测试:17 1000 04 1.50 3.14159 –10 1.5 4 2001 90210 666
以下是一个满足需求的 Perl 程序示例:
use strict;
use warnings;
# 读取输入的数字
my @numbers;
while (<>) {
push @numbers, split;
}
# 定义数值排序子程序
sub by_number {
$a <=> $b
}
# 对数字进行排序
my @sorted_numbers = sort by_number @numbers;
# 输出排序后的数字,右对齐
foreach my $number (@sorted_numbers) {
printf "%20g\n", $number;
}
将上述示例数据输入该程序,即可得到排序后右对齐输出的结果。
29、编写一个程序,将以下哈希表的数据按姓氏进行不区分大小写的字母顺序排序。当姓氏相同时,再按名字(同样不区分大小写)排序。输出的第一个名字应该是 Fred 的,最后一个应该是 Betty 的。所有姓氏相同的人应该分组在一起。不要修改数据。名字的大小写应与下面所示保持一致。哈希表数据为:my %last_name = qw{ fred flintstone Wilma Flintstone Barney Rubble betty rubble Bamm - Bamm Rubble PEBBLES FLINTSTONE };
以下是实现该功能的 Perl 代码:
my %last_name = qw{ fred flintstone Wilma Flintstone Barney Rubble betty rubble Bamm - Bamm Rubble PEBBLES FLINTSTONE };
my @sorted_names = sort { lc($last_name{$a}) cmp lc($last_name{$b}) or lc($a) cmp lc($b) } keys %last_name;
foreach my $name (@sorted_names) {
print "$name $last_name{$name}\n";
}
30、编写一个程序,在给定的字符串中查找给定子字符串的所有出现位置,并打印出子字符串所在的位置。例如,给定输入字符串“This is a test.”和子字符串“is”,程序应报告位置2和5。如果子字符串是“a”,则应报告8。如果子字符串是“t”,程序会报告哪些位置?
程序会报告位置0、10和13。

最低0.47元/天 解锁文章
80

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



