Question

I'm installing Bugzilla on Windows, and checksetup.pl asked me to install a bunch of modules by running ppm (Perl Package Manager) commands like so:

C:\>ppm install TimeDate

This runs correctly, and installs the TimeDate module.

I haven't done much command line stuff before, but I thought this would be a good time to try it out. So I made a batch file called PerlModules.bat:

ppm install Chart
ppm install Template-GD
ppm install MIME-tools
ppm install XML-Twig
ppm install PatchReader
ppm install perl-ldap
ppm install Authen-SASL
ppm install RadiusPerl
ppm install SOAP-Lite
ppm install JSON-RPC
ppm install JSON-XS
ppm install Test-Taint
ppm install HTML-Scrubber
ppm install Email-MIME-Attachment-Stripper
ppm install Email-Reply
ppm install TheSchwartz
ppm install Daemon-Generic
ppm install mod_perl
ppm install Apache-SizeLimit
ppm install Math-Random-Secure
ppm install TimeDate
ppm install DateTime
ppm install DateTime-TimeZone
ppm install Template-Toolkit
ppm install Email-Send
ppm install Email-MIME

Running it produces this output:

E:\Program Files\Bugzilla>PerlModules.bat

E:\Program Files\Bugzilla>ppm install Chart
Downloading Chart-2.4.6...done
Unpacking Chart-2.4.6...done
Generating HTML for Chart-2.4.6...done
Updating files in site area...done
  18 files installed

E:\Program Files\Bugzilla>

So it appears that only the first line of the batch file actually runs, and the rest do nothing.

In the end I looked up the man page for ppm with ppm help and discovered that I could pass all the package names at once and save myself the hassle of solving this problem, but I really don't understand why my little batch file didn't work.

I thought batch files just fed line after line to the shell prompt, waiting until each had finished its job, until they reached the end of file. What am I missing in this equation?

Was it helpful?

Solution

In my Perl installation the command ppm is a batch file: ppm.bat (not an .exe)

When you call one batch file from another, the calling batch file is terminated together with the called batch file.

You need to use call in order to be able to run another batch file from within one batch file.

call ppm install Chart
call ppm install Template-GD
call ppm install MIME-tools
call ppm install XML-Twig
call ppm install PatchReader
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top