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;
}