PPM is actually a batch file. When a batch file calls another, it will not return from the call.

If you put a CALL before each PPM, then the script will work.

i.e.
call ppm install DBI
call ppm install DBD::mysql

etc.