Perl Dev Kit

Does PerlApp provide Code Obfuscation?

Question: 

Will people be able to decompile the executables I've made with PerlApp?

Answer: 

PerlApp does provide a degree of code obfuscation. There is no trivial method to unwrap a PerlApp file.

Reverse Engineering any executable is possible if the attacker has control of the hardware. Critical copyrighted data and algorithms should be protected by a suitable legal agreement or not included in Perl code within a PerlApp file. If you are concerned about keeping important parts of your code secret, you may want to consider some additional measures, such as:

  • using strong encryption for critical data
  • implementing critical algorithms as XS modules that can be used by your Perl code.

Suppress console windows when using backticks

Question: 

How do I stop console windows from popping up when i call commands in backticks?

Answer: 

Using perlapp's --gui option should hide normal perl command line output, but system commands called within backticks may still open command line windows. To suppress this, try adding the following block to your script:

BEGIN {
    Win32::SetChildShowWindow(0) if defined &Win32::SetChildShowWindow;
}

This should work using ActivePerl version 632 or later.

Upgrade error - version mismatch.

Question: 

I'm getting the error "Perl lib version () doesn't match
executable version ()". What's wrong?

Answer: 

If you recieve an error that looks like the following:

"Perl lib version (v5.8.3) doesn't match executable version (v5.8.4) at
/PerlApp/Config.pm line 32.
BEGIN failed--compilation aborted at perlapp.pl line 859."

It's possible that you've installed a recent version of the PDK without first uninstalling the older version. This is not recommended.

To correct the problem:

  • Uninstall all versions of the PDK
  • Ensure the PDK installation directory has been removed. If necessary, delete it manually
  • reinstall the latest version of the PDK

Batch file for switching to/from PDK Debugger

Question: 

How can I quickly switch between using the PDK Debugger and the command
line debugger?

Answer: 

Here is a batch file for manipulating the relevant environment variables:

@ECHO OFF
SET MODE=%1

IF "%MODE%" == "PDK" GOTO PDK
IF "%MODE%" == "CLI" GOTO CLI
ECHO "no valid input? usage: DBSET "
ECHO "possible modes PDK or CLI"
GOTO END

:PDK
SET PERL5LIB=C:\Program Files\ActiveState Perl Dev Kit 6.0\lib\
SET PERL5DB=
GOTO REPORT

:CLI
SET PERL5LIB=""
SET PERL5DB=BEGIN { require 'perl5db.pl'; }
GOTO REPORT

:REPORT
ECHO Debugger mode set to %MODE%

:END

Copy the code into a file called DBSET.BAT, and move it into a directory in your PATH (e.g. C:\Perl\bin).

To use perl's regular command line debugger:

C:\> DBSET CLI

To use the PDK Debugger:

C:\> DBSET PDK

Perl Dev Kit blurb

Are you serious about programming in Perl? The Perl Dev Kit is a collection of useful tools that would benefit any Perl developer. Create stand-alone executables with PerlApp, debug Perl scripts locally or on a remote server with the graphical Debugger, improve code performance and reliability with PerlCov, or create complex text filters visually using Filter Builder.

Quick Links: