--- Catalyst.pm.orig	2010-06-15 20:35:10.000000000 -0700
+++ Catalyst.pm	2010-08-16 16:49:15.000000000 -0700
@@ -12,6 +12,7 @@
 use File::Spec ();
 use Getopt::Long qw(GetOptionsFromString :config no_ignore_case);
 use Data::Dumper;
+use File::Path;
 
 my $SAFETY = 0;
 
@@ -81,6 +82,8 @@
 
     chdir $FindBin::Bin;
 
+    my $symlink_exists = eval { symlink("",""); 1 };
+
     my @files;
     opendir CATDIR, '.';
   CATFILES: for my $name ( readdir CATDIR ) {
@@ -91,10 +94,20 @@
         push @files, $name;
     }
     closedir CATDIR;
+
+
     my @path = split '-', $self->name;
+    my $dest_dir = my $path = File::Spec->catdir( 'blib', 'lib', @path );
     for my $orig (@files) {
         my $path = File::Spec->catdir( 'blib', 'lib', @path, $orig );
-        rcopy( $orig, $path );
+
+        if ( $symlink_exists ) {
+            mkpath( $dest_dir );
+            symlink( $orig, $path ) || die "Failed to symlink [$orig] to [$path]: $!\n";
+        }
+        else {
+            rcopy( $orig, $path );
+        }
     }
 }
 
