74、编写一个程序,使用目录句柄列出目录中的所有文件。如果用户未指定目录,则使用主目录。
以下是实现该功能的程序示例:
print "Which directory? (Default is your home directory) ";
chomp(my $dir = <STDIN>);
if ($dir =~ /\A\s*\Z/) { # A blank line
chdir or die "Can't chdir to your home directory: $!";
} else {
chdir $dir or die "Can't chdir to '$dir': $!";
}
opendir my $dh, '.' or die "Cannot open current directory: $!";
foreach my $file (readdir $dh) {
print "$file\n";
}
closedir $dh;
程序首先提示用户输入目录,如果用户未输入则使用主目录。然后打开目录句柄,读取目录中的所有文件并打印,最后关闭目录句柄。
75、编写一个程序来删除命令行中指定的所有文件。可选择向用户警告任何出现的问题。
以下是一个满足需求的 Perl 程序示例:
foreach my $file (@ARGV) {
unlink $file or warn "cannot unlink $file: $!";
}
此程序借助 foreach 循环遍历命令行传入的所有文件,利用 unlink 函数删除文件。若删除失败,就会输出警告信息。
要运行该程序,可在命令行输入:
perl script.pl file1 file2 ...
这里的 script.pl 是程序文件名, file1 file2 ... 是要删除的文件列表。
76、编写一个程序,在源文件和目标文件之间创建硬链接。如果目标是一个目录,则将源文件的基本名称附加到目录名称后面。
以下是实现该功能的程序:
use File::Basename;
use File::Spec;
my($source, $dest) = @ARGV;
if (-d $dest) {
my $basename = basename $source;
$dest = File::Spec->catfile($dest, $basename);
}
link $source, $dest or die "Can't link '$source' to '$dest': $!\n";
若系统不支持硬链接,最后一行可以写成:
print "Would link '$source' to '$dest'.\n";
77、编写一个程序,在源文件和目标文件之间创建硬链接或符号链接。在命令行中使用 -s 表示创建符号链接。如果目标是一个目录,则将源文件的基本名称附加到该目录名之后。
以下是实现该功能的 Perl 代码:
use File::Basename;
use File::Spec;
my $symlink = $ARGV[0] eq '-s';
shift @ARGV if $symlink;
my($source, $dest) = @ARGV;
if (-d $dest) {
my $basename = basename $source;
$dest = File::Spec->catfile($dest, $basename);
}
if ($symlink) {
symlink $source, $dest or die "Can't make soft link from '$source' to '$dest': $!\n";
} else {
link $source, $dest or die "Can't make hard link from '$source' to '$dest': $!\n";
}
该代码首先检查命令行的第一个参数是否为 -s ,如果是则表示要创建符号链接,并将该参数从参数列表中移除。然后获取源文件和目标文件的名称。如果目标是一个目录,则将源文件的基本名称附加到该目录名之后。最后根据是否要创建符号链接的标志,调用 symlink 或 link 函数来创建相应的链接。如果创建链接失败,程序将输出错误信息并终止。
78、编写一个程序,显示当前目录下所有符号链接及其目标位置。
以下是一个Perl程序示例:
fo

最低0.47元/天 解锁文章
286

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



