第十二章:目录操作

上一篇 / 下一篇  2008-11-12 11:39:18 / 个人分类:《Perl语言入门》-小骆驼书-练习题答案

1)
use warnings;
sub chFolder{
 my $dir = shift @_;
 #print "dir is $dir in sub.\n";
 chdir $dir or die "Cannot chdir to $dir: $!";
 my @allFiles = glob "*";
 foreach (@allFiles){
  printf "$_\t";
 }
 print "\n";
}

print "Please enter a directory: ";
chomp (my $dir = <STDIN>);
#print "dir is $dir in main.\n";
if ($dir =~ /^\s*$/){
 &chFolder;
}elsif (-d $dir){
 &chFolder($dir);
}else{
 warn "$dir not exists!\n";
}

2)
use warnings;
sub chFolder{
 my $dir = shift @_;
 #print "dir is $dir in sub.\n";
 chdir $dir or die "Cannot chdir to $dir: $!";
 my @allFiles = glob ".* *";
 foreach (sort @allFiles){
  printf "$_\t";
 }
 print "\n";
}

print "Please enter a directory: ";
chomp (my $dir = <STDIN>);
#print "dir is $dir in main.\n";
if ($dir =~ /^\s+$/){
 &chFolder;
}elsif (-d $dir){
 &chFolder($dir);
}else{
 warn "$dir not exists!\n";
}

3)
use warnings;
print "Please enter a directory which you want to change (Default is your home dir): ";
chomp (my $dir=<STDIN>);
if ($dir =~ /^\s*$/) {
 chdir or die "Can't chdir to your home: $!"; 
}else{
 chdir $dir or die "Can't chdir to $dir: $!"; 
}
opendir DOT, "." or die "Can't opendir DOT: $!";
foreach (sort readdir DOT){
 next if /^\./;
 printf "$_\t"; 
}
close DOT;
print "\n";

4)
use warnings;
#print "Please enter some filenames which you want to delete: ";
#chomp (my $files=<STDIN>);
#my @files = split /\s+/, $files;
#foreach (@files){
# #system "cp", $_, "$_".".bak";
# unlink or warn "Failed on $_: $!\n"; 
#}
foreach (@ARGV){
 unlink or warn "Can't unlink '$_':$!\n"; 
}

5)
use warnings;
my ($source, $dest) = @ARGV;
rename $source, $dest
 or die "Can't rename '$source' to '$dest': $!";

6)
use warnings;
my ($source, $dest) = @ARGV;
link $source, $dest
 or die "Can't link '$source' to '$dest': $!";

7)
use warnings;
#if (@ARGV == 2){
# my ($source, $dest) = @ARGV;
# link $source, $dest
#  or die "Can't link '$source' to '$dest': $!"; 
#}
#if (@ARGV == 3){
# my ($para, $source, $dest) = @ARGV;
# if ($para eq "-s"){
#  symlink $source, $dest
#  or die "Can't symlink '$source' to '$dest': $!"; 
# }
#}

my $symlink = $ARGV[0] eq "-s";
shift @ARGV if $symlink;
my ($source, $dest) = @ARGV;
if ($symlink){
 symlink $source, $dest
  or die "Can't symlink '$source' to '$dest': $!"; 
}else{
 link $source, $dest
  or die "Can't link '$source' to '$dest': $!";
}

8)
use warnings;
#opendir DOT, "." or die "Can't opendir DOT:$!";
#foreach (sort readdir DOT){
# my $where = readlink;
# next if defined $where;
# print "$_ -> $where\n";
#}
for (glob ".* *"){
 my $where = readlink;
 print "$_ -> $where\n" if defined $where; 
}


TAG:

 

评分:0

我来说两句

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 47747
  • 日志数: 80
  • 建立时间: 2008-10-27
  • 更新时间: 2009-07-17

RSS订阅

Open Toolbar