《Perl语言入门》第四版习题(12)

1. [12]写一个程序要求用户输入一个目录名,再改变到那个目录去。如果用户输入的值是空白,则转变到他/她的主目录
去。改变后,将这个目录下的普通内容(不包括有点(.)开头的项)按照字母顺序列出来。(提示:使用目录句柄还
是glob 更方便?)如果没有成功改变目录,提示用户,但不要尝试输出目录里的内容。
2. [4]修改程序,使之包含所有的文件,不仅仅是那些不以点(.)开头的文件。
3. [5]如果你在前面的练习中使用的是目录句柄,使用glob 重写它。如果使用的是glob,则用目录句柄重写。
4. [6]写一个类似于rm 的程序,删除命令行中出现的任何文件。(不需要处理像rm 中的选项)
5. [10]写一个类似于mv 的程序,将命令行中的第一个参数重命名为第二个参数。(不需要处理像mv 中的选项,或别的
参数。)允许它是一个目录;如果是,使用相同的基本名字(basename),生成新的目录。
6. [7]如果你的操作系统支持,写一个类似于ln 的程序,能建立命令行中第一个参数的硬连接(hard link)到第二个参数。(不
需要处理ln 的选项,或者更多的参数。)如果系统没有硬连接,那么输出一条消息,指出如果可行你将进行的操作。
提示:这个程序和前面的有类似的地方,注意到这一点能节约你编码的时间。
7. [7]如果你的操作系统支持,修改上一个练习的程序,使之支持–s 选项(在别的参数前面),来表明你想创建一个软连
接(soft link)而非(hard link)。(甚至在你没有硬连接的情况,你也有可能能创建软连接。)
8. [7]如果你的操作系统支持,写一个程序来查找当前目录下的符号连接(symbolic links),并将它们的值打印出来(如ls
–l 一样:name -> value)。

 

1、

#!/usr/bin/perl -w
use strict;

if (@ARGV){
        chdir $ARGV[0] or die "cannot chdir to $ARGV[0]:$!";
}else{
        chdir  or die "cannot chdir to ~:$!";
}
foreach (<*>){
print $_,"/n";
}

2、

#!/usr/bin/perl -w
use strict;

if (@ARGV){
        chdir $ARGV[0] or die "cannot chdir to $ARGV[0]:$!";
}else{
        chdir  or die "cannot chdir to ~:$!";
}
foreach (<.* *>){
print $_,"/n";
}

3、

#!/usr/bin/perl -w
use strict;
print "Which directory?(Default is you home directory): ";
        chomp(my $dir=<STDIN>);
        if ($dir=~/^/s*$/){
           chdir or die "Can't chdir to you home directory: $!";
        }else{
          chdir $dir or die "Can't chdir to $dir: $!";
        }
        opendir DH,"." or die "Can't opendir DH: $!";
        foreach (sort readdir DH){
           # next if /^/./;
           print $_,"/n";
        }

4、

#!/usr/bin/perl -w
use strict;
for (@ARGV){
        unlink $_;
}

5、

#!/usr/bin/perl -w
use strict;

rename $ARGV[0],$ARGV[1];

6、

#!/usr/bin/perl -w
use strict;

link $ARGV[0],$ARGV[1] or warn "can't link";

7、

#!/usr/bin/perl -w
use strict;

symlink $ARGV[0],$ARGV[1] or warn "can't symlink";

8、

#!/usr/bin/perl -w
use strict;

foreach(<.* *>){
        my $dest=readlink $_;
        print "$_ -> $dest/n" if defined $dest;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值