http://qs1969.pair.com?node_id=222511


in reply to Re: shebang line - foreign to me
in thread shebang line - foreign to me

Exactly. This is why for all Perl scripts I'm going to distrubute on other systems I use ExtUtils::MakeMaker which does such patching automatically.

It is very simple:

< Makefile.PL file > use ExtUtils::MakeMaker; WriteMakefile(NAME => 'Hello', VERSION => '1.00', EXE_FILES => ['hello']); < MANIFEST file > Makefile.PL hello < hello file > #!perl use strict; use warnings; print "Hello, world!\n";
Once finished you can type perl Makefile.PL; make dist and get tarball ready to install with tar zxvf Hello-1.00.tar.gz; cd Hello-1.00; perl Makefile.PL; make; make install

Update: Replaced 'script.pl' with 'hello' in 'MANIFEST'.

--
Ilya Martynov, ilya@iponweb.net
CTO IPonWEB (UK) Ltd
Quality Perl Programming and Unix Support UK managed @ offshore prices - http://www.iponweb.net
Personal website - http://martynov.org

Replies are listed 'Best First'.
•Re: Re: Re: shebang line - foreign to me
by merlyn (Sage) on Dec 27, 2002 at 17:58 UTC
    Exactly. This is why for all Perl scripts I'm going to distrubute on other systems I use ExtUtils::MakeMaker which does such patching automatically.
    Either that's a recent feature (and therefore not portable), or hasn't been documented.

    Where did you find out about this?

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

      Either that's a recent feature (and therefore not portable), or hasn't been documented.

      I think it was there at least since 5.005. There is some mentions of this feature in ExtUtils::MM_Unix (search for fixin) but it seems it is not documented anywhere properly.

      Where did you find out about this?

      From personal experience. I just noticed that ExtUtils::MakeMaker always replaces my shebang with something else :) For example on my Linux system it replaces existing shebang with

      #!/usr/bin/perl -w eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell
      On Win32 I noticed that ExtUtils::MakeMaker does another magic. It creates .bat file which wraps perl script and adds .pl extenstion to perl script when doing its installation. I found that at least on Unix, Unix-like systems and on Win32 systems ExtUtils::MakeMaker does the right thing.

      --
      Ilya Martynov, ilya@iponweb.net
      CTO IPonWEB (UK) Ltd
      Quality Perl Programming and Unix Support UK managed @ offshore prices - http://www.iponweb.net
      Personal website - http://martynov.org

Re: Use ExtUtils::MakeMaker to install scripts
by jmerelo (Sexton) on Feb 02, 2005 at 11:07 UTC