1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- use strict;
- use warnings;
- use Getopt::Long;
- use File::Spec;
-
- sub usage { print STDERR "usage: $0: DOTROOT [PREFIX]\n"; exit 1; }
-
- my $dotroot;
- my $prefix;
-
- my $opts = GetOptions(
- 'dotroot=s' => \$dotroot,
- 'prefix=s' => \$prefix
- ) or usage;
-
- $dotroot = $dotroot // shift;
- $prefix = $prefix // shift;
- $prefix = $prefix // $ENV{HOME};
- $dotroot or usage;
-
- sub mklinks {
- my $dotroot = shift;
- -d $dotroot or die "not a directory: $dotroot";
- my @dirs = `ls $dotroot`;
- foreach my $dir (@dirs) {
- chomp $dir;
- my $source = File::Spec->rel2abs("$dotroot/$dir");
- my $target = "$prefix/.$dir";
- `mkdir -p $prefix`;
- if (-e $target) {
- warn "target exists: $target\n";
- } else {
- `ln -s $source $target`;
- }
- }
- }
-
- mklinks($dotroot);
|