30、编写一个程序,将目录更改为输入指定的位置,然后按字母顺序列出更改目录后该目录下的文件名。(如果目录更改未成功,则不要显示文件列表,仅警告用户。)
以下是实现该功能的代码:
print "Where to? ";
chomp($newdir = <STDIN>);
chdir($newdir) || die "Cannot chdir to $newdir: $!";
foreach (<*>) {
print "$_";
}
代码解释:
- 前两行用于提示用户输入并读取目录名称;
- 第三行尝试将目录更改为用户输入的名称,如果无法更改则终止程序;
-
foreach循环遍历匹配*模式的文件名列表,并按字母顺序输出。
31、编写一个程序,其功能类似于 rm 命令,在程序被调用时删除作为命令行参数给出的文件。(你不需要处理 rm 的任何选项)
在 Perl 中可以使用 unlink 函数实现该功能。由于命令行参数可在程序启动时通过 @ARGV 数组获取,所以示例代码如下:
#!/usr/bin/perl
foreach my $file (@ARGV) {
unlink($file);
}
将上述代码保存为一个 .pl 文件,例如 rm_like.pl ,然后在命令行中运行 perl rm_like.pl file1 file2 ... 即可删除指定的文件。注意,要在一个几乎为空的目录中测试此程序,以免意外删除有用的文件。
32、编写一个程序,其功能类似于 ln 命令,从第一个命令行参数到第二个命令行参数创建一个硬链接。(你不需要处理 ln 的任何选项,也不需要处理多于两个的参数。)
在 Perl 中可以这样实现:
link($ARGV[0], $ARGV[1]) || die "cannot link $ARGV[0] to $ARGV[1]";
这里 $ARGV[0] 代表第一个命令行参数, $ARGV[1] 代表第二个命令行参数。 link 函数用于创建硬链接,如果创建失败则使用 die 输出错误信息。
33、编写一个程序,使其能够处理可选的 -s 开关。当输入 -s 开关时,程序应创建符号链接;若未输入 -s 开关,则创建硬链接。
以下为实现此功能的程序示例,此程序前几行检查第一个参数是否为 -s ,若为 -s 则将 $symlink 变量置为 1 并移除 -s 标志;中间部分处理目标为目录的情况;最后根据 $symlink 的值决定创建符号链接还是硬链接。
if ($ARGV[0] eq "-s") { # wants a symlink
$symlink++; # remember that
shi
Perl文件操作与系统命令实践

最低0.47元/天 解锁文章
570

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



