#!/usr/bin/perl use strict; use warnings; if(@ARGV < 3) { print <<"END"; Usage: $0 [options] srcdir destdir file1 [file2 [file3 [...]]] Hard links given files in destdir to originals in srcdir. Options: -s Use soft links -v Verbose--list each file as it's linked END exit; } my %opts; $opts{pop @ARGV}=1 while $ARGV[0] =~ /^-/; my($srcdir, $destdir, @files)=@ARGV; for(@files) { do_link("$srcdir/$_", "$destdir/$_") or die "Can't link $srcdir/$_ to $destdir/$_: $!"; print "$srcdir/$_ -> $destdir/$_\n" if $opts{-v}; } sub do_link { if($opts{-s}) { return symlink($_[0], $_[1]); } else { return link($_[0], $_[1]); } }