banner



How To Write Perl Script In Windows

A Beginner'due south Guide to Compiling Perl Scripts

Marc Bilodeau / ItsADevLife

I love Perl. It's my offset existent language as a developer, and I've washed very well with it over the past xix years writing code much of those days. However, not all code can be open source and freely available. That's why compiling perl scripts into binary files is a great mode to share software without sharing the source lawmaking.

Why Compile Perl Scripts?

Perl is an interpreted and dynamic programming language. Information technology has proven versatile throughout its long history. Through CPAN, there is nonetheless an agile and thriving community of roughly 200,000 modules from over 13,000 authors. Every bit a result, developers can create meaningful one liner scripts to full fledge applications and platforms with Perl.

However, running perl scripts requires the interpreter and advisable modules on the system. Thankfully, most Linux distributions come with Perl. This certainly saves time setting up the environment. Then, users tin run programs by sharing perl scripts and modules.

Yet, the source code for those scripts is visible to anyone. Developers sometimes don't want to share how they write an application. The developer tin can make up one's mind to release the code as open up source, or compile the source lawmaking to protect their intellectual property. Open up source software is wonderful, just developers do like to eat. Unfortunately, free code doesn't always exchange well for food and essential services. Although, in that location are certainly real world exceptions through a service model.

Another reason to compile source code is portability. It simplifies the requirements for the terminate user by providing a binary executable file instead of copying files to a system with the interpreter.

What Does Compiling Perl Scripts Mean?

Compiling allows developers to turn their source code into binary files. Unfortunately, it is possible to decompile executables and look at the original source. Thankfully, compiling does add a layer of defense. It is possible to further protect the source code depending on the features of the compiler.

In Perl, the file size for compiled binaries is much larger than the script'southward file size. That's because the scripts, whatever dependencies, and a copy of the perl interpreter are in the binary.

In that location are several options available for compiling perl scripts. However, many of them are abandoned projects or discontinued products. Regardless, it demonstrates historical interest to share perl scripts in binary grade.

Package Type Description
ActiveState_PDK Commercial Available for Windows and Linux. This compiler requires ActiveState Perl and the Perl Dev Kit. Still, in 2017 ActiveState will no longer develop its Perl Evolution Kit. Licenses range from $145 to $395 USD.
PAR Gratis Perl Archive Toolkit. Well maintained and available through CPAN.
Perl2Exe Commercial Bachelor for Windows, Linux, Solaris, AIX, and HP-UX. Licenses range from $49 to $5000 USD. Actively maintained.
PerlBin  Free Like App::Packer and PAR with similar features and options. All the same, PerlBin has not been updated in many years.
perlcc  Complimentary Included in Perl five.10 and older. In newer versions, the underlying modules are no longer packaged with the main distribution of Perl. Perlcc is no longer maintained.

Which Compiler Should I Use?

Currently, I use ActiveState's PDK on the Microsoft Windows and Linux platforms. Unfortunately, in 2017 ActiveState announced that it will no longer develop its Perl Development Kit. It works very well, and I would continue to use it if it wasn't discontinued. Alternatively, Perl2Exe is also an excellent compiler for those whom require a commercial product or technical support.

On the other hand, PAR is complimentary and actively maintained. The documentation tin can be overwhelming when earthworks in for the first fourth dimension. Also, support is restricted to forums and user groups. Regardless, PAR has all the necessary features, the correct cost tag, a customs, and it'due south well maintained. Now, let's take a deeper dive into PAR.

The All-time Perl Program in the World

Subsequently months of development and weeks of QA testing, The All-time Perl Program in the World is set for release. Nonetheless, this lawmaking is and then vivid and the environment so complex to deploy, that the program should be compiled earlier releasing it to the masses.

The best perl script in the world is ready for the masses!
The Best Perl Program in the World is ready for release! Shh… Don't tell anyone how information technology works.

Before the globe can benefit from this life changing feel, the perl script must be compiled within a Build Surroundings.

Compiling Perl in a Build Surroundings

A Build Environment contains the essential perl scripts, libraries, and perl modules necessary when compiling the binaries. Secondly, there will be a different Build Surroundings for each operating organisation and processor architecture. For example, a Microsoft Windows Build Environment is necessary for compiling Windows executables. Notwithstanding, those binaries will not work on a Linux organisation. Hence, a Linux Build Environment is necessary to compile Linux binaries. Yet, those x64 binaries will non work on ARM devices like a Raspberry Pi with the same Linux Os. Therefore, a Build Environs is necessary for compiling those perl scripts.

The setup is like on various operating systems and processor architectures. Unfortunately, this can be expensive when using physical machines. Thankfully, using virtual machines on VMware, KVM, Hyper-V, openstack, or VirtualBox can save time and money. Virtual Machines are great for multiple Build Environments on a single system. Secondly, virtual machines accept snapshot capabilities. Snapshots are helpful when experimenting with newer modules and configurations. If something goes wrong, it's much faster to revert to a snapshot than to completely recreate a Build Environment.

A Microsoft Windows v10 Build Environment

Perl must be installed manually since it doesn't come pre-installed on Microsoft Windows. Strawberry Perl is about identical to a Perl installation on Linux systems. ActiveState ActivePerl is another alternative. Once 1 of those packages is installed, the next step is to install the modulesPAR and PAR::Packer using cpan or cpanm. Any dependencies will install automatically.

          C:\Users\dev>cpanm PAR          PAR is up to date. (i.015)          C:\User\dev>cpanm PAR::Packer          --> Working on PAR::Packer Fetching http://world wide web.cpan.org/authors/id/R/RS/RSCHUPP/PAR-Packer-1.043.tar.gz ... OK Configuring PAR-Packer-i.043 ... OK ==> Constitute dependencies: Module::ScanDeps, Getopt::ArgvFile --> Working on Module::ScanDeps Fetching http://world wide web.cpan.org/authors/id/R/RS/RSCHUPP/Module-ScanDeps-one.24.tar.gz ... OK Configuring Module-ScanDeps-i.24 ... OK Edifice and testing Module-ScanDeps-1.24 ... OK Successfully installed Module-ScanDeps-1.24 --> Working on Getopt::ArgvFile Fetching http://www.cpan.org/authors/id/J/JS/JSTENZEL/Getopt-ArgvFile-one.11.tar.gz ... OK Configuring Getopt-ArgvFile-i.eleven ... OK Edifice and testing Getopt-ArgvFile-1.11 ... OK Successfully installed Getopt-ArgvFile-1.11 Edifice and testing PAR-Packer-1.043 ... OK Successfully installed PAR-Packer-1.043 3 distributions installed          C:\User\dev>cpanm PAR::Packer          PAR::Packer is up to date. (1.043)          C:\User\dev>        

Ubuntu xvi.04 and 18.04 Build Environments

At the time of this writing, Ubuntu 18.04 simply released as the latest (LTS) Long Term Supported version. Thankfully, both sixteen.04 and xviii.04 use the same steps to install the necessary software packages. Between the ii version, Ubuntu 16.04 has an older version of perl (v.22.1) and Ubuntu xviii.04 has 5.26.ane. Regardless, executing sudo apt install libpar-packer-perl installs the necessary libraries and modules.

dev@virtualbox:~$          sudo apt install libpar-packer-perl          [sudo] password for dev: Reading parcel lists... Done Edifice dependency tree Reading state information... Washed                      The post-obit boosted packages volition exist installed:  libgetopt-argvfile-perl libmodule-scandeps-perl libmodule-signature-perl  libpar-dist-perl libpar-perl The post-obit NEW packages volition be installed  libgetopt-argvfile-perl libmodule-scandeps-perl libmodule-signature-perl  libpar-dist-perl libpar-packer-perl libpar-perl                    0 to upgrade, half-dozen to newly install, 0 to remove and 0 not to upgrade. Need to get 2,006 kB of archives. Afterwards this operation, 5,773 kB of additional disk space volition be used.          Exercise you lot desire to continue? [Y/north] Y          ... output truncated on purpose ...          Setting up libgetopt-argvfile-perl (1.xi-1) ... Setting upwardly libmodule-scandeps-perl (one.20-1) ... Setting up libmodule-signature-perl (0.79-one) ... Setting upwardly libpar-dist-perl (0.49-2) ... Setting up libpar-perl (1.010-i) ... Setting up libpar-packer-perl (i.029-1) ...          dev@virtualbox:~$        

A macOS 10.thirteen Build Environment

Like Ubuntu, different versions of macOS have dissimilar versions of Perl pre-installed. Unfortunately, Perl 5.xviii.two is pre-installed with macOS 10.13. This version of perl is currently end-of-life. Although, fixes for urgent issues like astringent security problems may still be released.Regardless, all packages for compiling perl scripts are already installed with the operating system. Nevertheless, a programmer can upgrade to v.26.1 if needed.

          MacBookAir:~ marc$ pp --version          PAR Packager, version 1.017 (PAR version ane.007) Copyright 2002-2009 by Audrey Tang <cpan@audreyt.org>  Neither this program nor the associated "parl" program impose any licensing restrictions on files generated past their execution, in accordance with the 8th article of the Artistic License:  "Assemblage of this Parcel with a commercial distribution is  always permitted provided that the utilise of this Package is embedded;  that is, when no overt attempt is made to make this Package'south  interfaces visible to the end user of the commercial distribution.  Such use shall not be construed as a distribution of this Bundle."  Therefore, you are absolutely gratis to place any license on the resulting executable, equally long equally the packed third-party libraries are also available nether the Artistic License.  This program is gratuitous software; you lot can redistribute it and/or alter it nether the aforementioned terms as Perl itself. In that location is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.          MacBookAir:~ marc$        

Other Operating Systems

Equally shown above, the steps to configure Build Environments are very similar. This means they could work with a niggling tinkering on other operating systems. Personally, I'grand experimenting with Android since my Google Pixel XL is my PC. Likewise, Docker is showing hope as a portable Build Environment across unlike operating systems including binaries that can run on a Raspberry Pi.

Compiling Perl in a Build Environs

With the Build Environments fix, a developer can now build binaries. Thepp command from the PAR Packager creates standalone executables from perl scripts. RecollectThe Best Perl Plan in the Globe? The post-obit demonstrates compiling perl on Microsoft Windows 10, Ubuntu xvi.04, and macOS 10.xiii using the pp command.

Compiling Perl Scripts on Microsoft Windows 10
Microsoft Windows 10 – compiling perl scripts into a windows executable
Compiling Perl Scripts on Ubuntu 16.04
Ubuntu sixteen.04 – compiling perl scripts into a portable linux binary
An example of compiling perl scripts on Mac OS 10.3
macOS 10.thirteen – compiling perl scripts into a portable macOS binary

The command line arguments are the same across the iii unlike platforms. Most likely the arguments volition exist similar on any arrangement that tin can install Perl and PAR Packer. However, there may be differences depending on the operating system, the program's command line options, and processor compages.

The pp control line

pp -Thousand PAR -M Data::Dumper -x -o bestProgram.exe bestProgram.pl

The -M pick adds modules and their dependencies. Furthermore, the more complex an awarding, the more modules are probable in utilize. For this reason, there are a few useful shortcuts to include multiple modules without having to list them separately.

  • -One thousand Foo::** adds every module in the namespace except Foo. It volition include Foo::Bar andFoo:Bar::More up to any depth except for Foo itself.
  • -M Foo::* adds every module in the first level. This include Foo::Bar and Foo::It but not Foo::Bar::More nor Foo.
  • -M Foo:: adds every module from Foo to any depth. This includes Foo, Foo::Bar, Foo::It, and Foo::Bar::More than.

The -x option may not be necessary in some cases. However, it may find boosted run-fourth dimension dependencies which can't be detected by static analysis. If the perl script uses arguments, apply the xargs option to execute unlike lawmaking paths since detecting modules depends on which part of the lawmaking path runs. For more information, see the pp documentation.

The -o selection is the proper noun of the output binary file. It tin can be any name, and it doesn't have to match the input file.

The last parameter, bestProgram.pl, is the input file. It is where pp starts the compiling process.

Securing the Source

Although the source is nicely compiled into a binary, information technology isn't secure. Someone can nevertheless hands extract the source code from the executable files. That's because the binary is a well-organized zip file correct now.

          dev@virtualbox:~/Desktop/decompile$ ll          total 3436 -rwxr-xr-x 1 dev dev 3506937 Apr 14 17:52 bestProgram*          dev@virtualbox:~/Desktop/decompile$ unzip bestProgram          Annal: bestProgram  creating: lib/  creating: script/  inflating: MANIFEST          ... output truncated on purpose ...          inflating: script/bestProgram.pl   inflating: script/primary.pl          dev@virtualbox:~/Desktop/decompile$ ll          total 3452 -rwxr-xr-ten one dev dev 3506937 Apr xiv 17:52 bestProgram* drwxr-xr-10 14 dev dev 4096 Apr 8 01:37 lib/ -rw-r--r-- 1 dev dev 1282 Apr 8 01:37 MANIFEST -rw-r--r-- ane dev dev 219 April 8 01:37 META.yml drwxr-xr-x 2 dev dev 4096 Apr 8 01:37 script/          dev@virtualbox:~/Desktop/decompile/script$ ll script/          total 16 -rw-r--r-- 1 dev dev 138 Apr 8 01:37 bestProgram.pl -rw-r--r-- one dev dev 698 April 8 01:37 master.pl          dev@virtualbox:~/Desktop/decompile/script$ more script/bestProgram.pl          #!perl          use strict;          use Information::Dumper;          my %test =                      (                      offset => ane,                      second => 2,                      third => 3                      );          print Dumper \%examination;          dev@virtualbox:~/Desktop/decompile/script$        

Oh no! The source lawmaking for The Best Perl Program in the World is exposed!  All the same, there are means to protect the source code to a degree. Unfortunately, at that place is no bulletproof fashion to 100% protect source lawmaking. In fact, it'due south non possible with any language. The best protection other than providing a comprehensive Finish User License Agreement, is to apply filters to the compile process.

Attempting to Secure the Source Code

PAR has the ability to apply filters to perl scripts and modules. However, the almost common filter to hide source lawmaking from the casual eye is Bleach.

At that place are two boosted control parameters relating to the Bleach filter. Commencement,-f Bleach applies a filter to the input file,bestProgram.pl. Secondly, the-F Bleach option applies the filter to the perl modules. PAR provides flexibility to perform the filter on ane or the other or both.

pp          -f Bleach -F Bleach-M PAR -M Data::Dumper \      -ten -o bestProgram_Bleached.exe bestProgram.pl

1 caveat when compiling perl binaries is that information technology will increase the overall executable size. In some cases, it's quite a bit. It will vary depending on the operating system and the number of modules passing through the filter during compile time. Below is an instance of the size differences on Microsoft Windows x.

05/05/2018 12:01 PM 154 bestProgram.pl 05/05/2018 12:11 PM 7,646,565 bestProgram_Bleached.exe 05/05/2018 12:10 PM 5,945,544 bestProgram_unprotected.exe

Now when attempting to unzip the binary file subsequently compiling perl to examine the source code, it looks hideous and unreadable. The same is true for the modules.

Directory of C:\Users\dev\decompile\bestProgram\script  04/23/2018 08:13 PM <DIR> . 04/23/2018 08:xiii PM <DIR> .. 04/23/2018 08:06 PM 1,577 bestProgram.pl 04/23/2018 08:06 PM 698 main.pl  2 File(s) two,275 bytes  2 Dir(due south) 36,915,073,024 bytes costless          C:\Users\dev\decompile\bestProgram\script>more bestProgram.pl          $_=<<'';y;\r\n;;d;y; \t;01;;$_=pack'b*',$_;$_=eval;$@&&die$@;$_

This is certainly a stride in the right direction. Even so, this isn't the only method when compiling perl scripts. There is some other filter that encrypts the source lawmaking.

Making the Best Darn Endeavor to Secure the Source Code

The compiler tin can encrypt files using the Crypto filter from the PAR::Filter::Crypto module. Like Bleach, the filter tin take care of both the perl scripts and perl modules.

Nonetheless, in that location are some important caveats concerning compiling perl scripts. Most noteworthy is both Bleach and Crypto filters will protect the source code from the causal curious user. Unfortunately, someone with more skills in hacking and debugging could obtain a copy of the source lawmaking.

Regardless, there are boosted modules to install in the Build Environment. Although, the version of Perl does matter. Unfortunately, the Filter::Crypto module does not successfully install on all versions of Perl.

Microsoft Windows

The simply requirement when compiling perl using the Crypto filter is to install the Filter::Crypto module.

cpan Filter::Crypto

However, the version of Strawberry Perl matters. At the time of this writing, the latest version (5.26.ii.one) fails to install the Filter::Crypto module. Although, Strawberry Perl v.24.4.ane successfully installs it. If 5.26.ii.ane is absolutely necessary, then the Bleach filter is the best alternative.

Ubuntu 16.04

By default, essential libraries and header files aren't available for the Filter::Crypto module. Therefore, the libssl-dev parcel is necessary to install first. The libssl-dev package is part of the OpenSSL project'due south implementation of the SSL and TLS cryptographic protocols.

sudo apt install libssl-dev

Lastly, install the Filter::Crypto module using cpan or cpanm.

sudo cpan Filter::Crypto

Ubuntu 18.04

At the time of this writing, the version of Perl that is included with Ubuntu 18.04 (v.26.1) fails to install the Filter::Crypto module. Fortunately, a compiled encrypted binary from Ubuntu 16.04 will work on an Ubuntu 18.04 organisation. If Ubuntu 18.04 is absolutely necessary, either downgrade to a version of Perl that can successfully install the Filter::Crypto module or apply the Bleach filter.

macOS 10.xiii

Although Perl 5.eighteen.2 is bachelor with this version of macOS, it can install the Filter::Crypto module. Furthermore, it is more manual and does involve answering some questions. During the process of installing the module, the location of OpenSSL is different than the default setting. However, the remaining questions use the defaults.

          MacBookAir:~ marc$ sudo cpan Filter::Crypto          CPAN: Storable loaded ok (v2.41) Reading '/Users/marc/.cpan/Metadata'  Database was generated on Saturday, 05 May 2018 11:54:10 GMT Running install for module 'Filter::Crypto' Running brand for S/SH/SHAY/Filter-Crypto-2.07.tar.gz CPAN: Assimilate::SHA loaded ok (v5.84_01) CPAN: Compress::Zlib loaded ok (v2.06) Checksum for /Users/marc/.cpan/sources/authors/id/S/SH/SHAY/Filter-Crypto-ii.07.tar.gz ok CPAN: File::Temp loaded ok (v0.23) CPAN: Parse::CPAN::Meta loaded ok (v1.4404) CPAN: CPAN::Meta loaded ok (v2.133380) CPAN: Module::CoreList loaded ok (v3.03)  CPAN.pm: Building S/SH/SHAY/Filter-Crypto-2.07.tar.gz          Where is your OpenSSL? [/usr] /usr/local/opt/openssl          Institute include directory .. /usr/local/Cellar/openssl/one.0.2n/include Found OpenSSL version .... 1.0.2n Found crypto library ..... /usr/local/Cellar/openssl/1.0.2n/lib/libcrypto.a Found binary executable .. /usr/local/Cellar/openssl/1.0.2n/bin/openssl  Null algorithms available:  [ 1] DES cake cipher  [ 2] 2 key triple DES block cipher  [ 3] Three key triple DES block cipher  [ 4] DESX block cipher  [ 5] RC4 stream cipher  [ 6] IDEA block null  [ 7] RC2 cake cipher  [ 8] Blowfish cake cipher  [ 9] Aught zippo  [x] RC5 block nada  [11] CAST5 cake cipher  [12] AES block cipher          Which null algorithm do you lot want to use? [12] 12          Modes of operation available:  [1] ECB (Electronic Codebook Fashion)  [two] CBC (Null Block Chaining Fashion)  [three] CFB (64-Bit Cipher Feedback Fashion)  [4] OFB (64-Flake Output Feedback Mode)          Which mode of operation practice you desire to employ? [2] two          This is a variable key length algorithm. Valid key lengths are: 16, 24 or 32 bytes.          What central length (in bytes) practise you want to use? [32] 32          You lot can either specify a countersign from which the primal to be used for encryption/decryption will be derived using a PKCS#5 primal derivation algorithm, or you lot can directly specify the central to use. You tin can too have a password or central randomly generated for you.  Options for specifying or deriving the key:  [one] Enter a password when prompted  [two] Have a password randomly generated  [3] Enter a central when prompted  [iv] Have a primal randomly generated          How do you want to specify or derive the key? [2] 2          Random number generators:  [1] Perl's built-in rand() function  [2] OpenSSL'southward rand command          Which RNG exercise yous want to use? [ii] 2          Your cipher configuration has been written to the file 'CipherConfig.h'. You lot may desire to go along this file in a rubber place if you e'er need to rebuild these modules using the same configuration, specially if your key was randomly generated.  Build options:  [1] Build both components  [2] Build CryptFile component only  [iii] Build Decrypt component just          Which component(s) do you want to build? [1] one          Exercise you want to install 'crypt_file'? [y] y          Checking if your kit is complete... Looks proficient          ... output truncated on purpose ...          Installing /usr/local/bin/crypt_file Appending installation info to /Library/Perl/Updates/v.18.2/darwin-thread-multi-2level/perllocal.pod  SHAY/Filter-Crypto-two.07.tar.gz  sudo /usr/bin/make install -- OK          MacBookAir:~ marc$        

And Now the Magic

The pp command uses theCrypto filter like theBleach filter. One other difference is the Filter::Crypto::Decrypt module must be packaged with the binary. Otherwise, the binary won't know how to decrypt the files.

pp          -f Crypto -F Crypto -M Filter::Crypto::Decrypt          \   -M PAR -Chiliad Data::Dumper -ten -o bestProgram_Encrypted.exe bestProgram.pl

The file size of the binary is comparable to Bleach. However, both are still larger than the unprotected binary. Beneath is an example of the file sizes from an Ubuntu 16.04 Build Environment.

-rwxr-xr-x 1 dev dev 3980618 May 5 15:55 bestProgram_Bleached.exe* -rwxr-xr-ten one dev dev 3929391 May v fifteen:59 bestProgram_Encrypted.exe* -rwxr-xr-x 1 dev dev 3471673 May 5 xv:55 bestProgram.exe* -rw-rw-r-- 1 dev dev 140 May v fifteen:53 bestProgram.pl

What would the coincidental curious user see when attempting to peel dorsum the layers?

          dev@virtualbox:~/Desktop/decompile$ unzip bestProgram_Encrypted.exe          Archive: bestProgram_Encrypted creating: lib/ creating: script/ inflating: MANIFEST          ... output truncated on purpose ...          inflating: script/bestProgram.pl inflating: script/principal.pl            dev@virtualbox:~/Desktop/decompile$ ll          total 3936 drwxrwxr-x 4 dev dev 4096 May 5 fourteen:52 ./ drwxr-xr-10 3 dev dev 4096 May 5 14:52 ../ drwxr-xr-x fifteen dev dev 4096 May v fourteen:42 lib/ -rw-r--r-- ane dev dev 1353 May v 14:42 MANIFEST -rw-r--r-- 1 dev dev 233 May 5 14:42 META.yml drwxr-xr-10 2 dev dev 4096 May 5 14:42 script/          dev@virtualbox:~/Desktop/decompile$ more script/bestProgram.pl          utilise Filter::Crypto::Decrypt; e6ad69e3dd1e9901ccf6ba701ff66dfb09ba6b2f6c3b872e33e1929e56298f9861777c6a21255012 c658fa873214cd41071f6915ef594ee5447ae02afc1e2d726333fb855148920518e827fbb0990053 73eddabe4e608e15fcc54008c659f218ac32d56ac8d05a78cfd446ae05cf6c19f7e3c1b30fab747f c0b0017243f764b3d3db0ef081bbf245478bd5a6af4c361b22e488edf203d91d4018d930fe4d2c1b 8d4d103810eb0603          dev@virtualbox:~/Desktop/decompile$ ../bestProgram_Encrypted.exe          $VAR1 = {  'second' => 2,  'first' => 1,  '3rd' => three  };          dev@virtualbox:~/Desktop$        

Distributing Binaries

Finally, The All-time Perl Program in the Globe is ready to release. Not so fast!

There is one very important step earlier distributing binaries to the masses. In fact, it's then important it should happen before  whatsoever lawmaking is written using a perl module, library file, or SDK. If not, it could lead to legal issues. Yikes!

Normally, the license details are part of the package either in a LICENSE file, on a website, or in the documentation. However, there may exist no license terms. Unfortunately, that doesn't mean information technology's ok to use it. In this case, information technology's best to contact the writer to either ask for permission or to clarify any licensing requirements.

More often than not, it comes down to the license and how the application uses information technology. There are a lot of open source licenses and each has different rules. Also, many libraries and SDK take their own terms and atmospheric condition. Furthermore, some may require purchasing a license to distribute. Unfortunately, licensing is a circuitous issue. Therefore, it may be necessary to speak with a lawyer.

For anyone that develops applications today, it's likely that tertiary party libraries and modules are involved. Also, each of them requires careful exam of their use cases inside an application. This can be a daunting task. Thankfully, there are companies out there that specialize in source code scanning to place libraries, SDKs, and open source software licenses. However, it tin can be pricey depending on the size and scale of the application.

Conclusion

Interpreted Languages similar Perl require the interpreter and other modules on the organization to run the program. Thankfully, there are options available for compiling perl scripts into binaries.

PAR is an first-class cross-platform parcel that tin can accomplish this goal. Additionally, PAR Filters brand it easy to obscure source lawmaking and modules. Still, it is of import to comply with the licenses and terms of use for any third political party component before releasing any software.

Source: https://www.marcbilodeau.com/compiling-perl/

Posted by: levesquefroutichfuld.blogspot.com

0 Response to "How To Write Perl Script In Windows"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel