diff --git a/ghc/driver/ghc.lprl b/ghc/driver/ghc.lprl
index 8294675cd68b7b731cd9fa05a5c487648f7ee63c..0962efbd50d4db80c980b4b4e34cc0656af8168d 100644
--- a/ghc/driver/ghc.lprl
+++ b/ghc/driver/ghc.lprl
@@ -113,7 +113,7 @@ GHC_OPT_HILEV_ASM GhcWithNativeCodeGen
 
 GHC_UNLIT GHC_HSCPP GHC_HSC GHC_SYSMAN
 
-CP RM PERL CONTEXT_DIFF
+CP RM CONTEXT_DIFF
 
 WAY_*_NAME WAY_*_HC_OPTS
 
@@ -1444,7 +1444,8 @@ if ($Do_lnkr) {
 	# OK, now create the magic script for "$executable"
 	open(EXEC, "> $executable") || &tidy_up_and_die(1,"$Pgm: couldn't open $executable to write!\n");
 	print EXEC <<EOSCRIPT1;
-#!${PERL}
+eval 'exec perl -S \$0 \${1+"\$@"}'
+  if \$running_under_some_shell;
 # =!=!=!=!=!=!=!=!=!=!=!
 # This script is automatically generated: DO NOT EDIT!!!
 # Generated by Glasgow Haskell, version ${PROJECTVERSION} ${PROJECTPATCHLEVEL}