Perl: Difference between revisions

From NixOS Wiki
imported>HLandau
mNo edit summary
imported>Raboof
document caveats running a perl script
Line 1: Line 1:
==How to add something from CPAN to nixpkgs==
==Running a Perl script==
 
Common problems and solutions:
 
<code>Can't locate DB_File.pm in @INC (you may need to install the DB_File module)</code>: run it with <code>nix-shell -p perl -p perlPackages.DBFile --run ./myscript.pl</code>
 
<code>./myscript.pl: bad interpreter: /usr/bin/perl: no such file or directory</code>: change the first line of the script to <code>#!/usr/bin/env -S perl</code> or start it with <code>perl ./myscript.pl</code>
 
==Adding something from CPAN to nixpkgs==


* Use the <tt>nix-generate-from-cpan.pl</tt> script (see <tt>nixpkgs/maintainers/scripts/</tt>) to generate something appropriate.<br/>Example usage: <tt>nix-generate-from-cpan.pl Devel::REPL</tt>
* Use the <tt>nix-generate-from-cpan.pl</tt> script (see <tt>nixpkgs/maintainers/scripts/</tt>) to generate something appropriate.<br/>Example usage: <tt>nix-generate-from-cpan.pl Devel::REPL</tt>

Revision as of 10:56, 2 May 2020

Running a Perl script

Common problems and solutions:

Can't locate DB_File.pm in @INC (you may need to install the DB_File module): run it with nix-shell -p perl -p perlPackages.DBFile --run ./myscript.pl

./myscript.pl: bad interpreter: /usr/bin/perl: no such file or directory: change the first line of the script to #!/usr/bin/env -S perl or start it with perl ./myscript.pl

Adding something from CPAN to nixpkgs

  • Use the nix-generate-from-cpan.pl script (see nixpkgs/maintainers/scripts/) to generate something appropriate.
    Example usage: nix-generate-from-cpan.pl Devel::REPL
  • After reviewing the result from the previous step and making appropriate modifications, add it to pkgs/top-level/perl-packages.nix. Note that some things use buildPerlPackage while some use buildPerlModule. Also note the mostly-followed naming convention as well as the mostly-followed alphabetical ordering. There are plenty of examples in perl-packages.nix — use the source, Luke!
  • Build and test.