Next: PHP, Previous: Tcl, Up: List of Programming Languages   [Contents][Index]


15.5.21 Perl

RPMs
perl
Ubuntu packages
perl, libintl-perl
File extension
pl, PL, pm, perl, cgi
String syntax
 ;* "abc"
  • 'abc'
  • qq (abc)
  • q (abc)
  • qr /abc/
  • qx (/bin/date)
  • /pattern match/
  • ?pattern match?
  • s/substitution/operators/
  • $tied_hash{"message"}
  • $tied_hash_reference->{"message"}
  • etc., issue the command ‘man perlsyn’ for details
gettext shorthand
__ (double underscore)
gettext/ngettext functions
gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext, pgettext, dpgettext, dcpgettext, npgettext, dnpgettext, dcnpgettext
textdomain
textdomain function
bindtextdomain
bindtextdomain function
bind_textdomain_codeset
bind_textdomain_codeset function
setlocale
Use setlocale (LC_ALL, "");
Prerequisite
use POSIX; use Locale::TextDomain; (included in the package libintl-perl which is available on the Comprehensive Perl Archive Network CPAN, https://www.cpan.org/).
Use or emulate GNU gettext
platform dependent: gettext_pp emulates, gettext_xs uses GNU gettext
Extractor
xgettext -k__ -k\$__ -k%__ -k__x -k__n:1,2 -k__nx:1,2 -k__xn:1,2 -kN__ -kN__n:1,2 -k__p:1c,2 -k__np:1c,2,3 -kN__p:1c,2 -kN__np:1c,2,3
Formatting with positions
Both kinds of format strings support formatting with positions. printf "%2\$d %1\$d", ... (requires Perl 5.8.0 or newer) __expand("[new] replaces [old]", old => $oldvalue, new => $newvalue)
Portability
The libintl-perl package is platform independent but is not part of the Perl core. The programmer is responsible for providing a dummy implementation of the required functions if the package is not installed on the target system.
po-mode marking
Documentation
Included in libintl-perl, available on CPAN (https://www.cpan.org/).

An example is available in the examples directory: hello-perl.

The xgettext parser backend for Perl differs significantly from the parser backends for other programming languages, just as Perl itself differs significantly from other programming languages. The Perl parser backend offers many more string marking facilities than the other backends but it also has some Perl specific limitations, the worst probably being its imperfectness.

General Problems:    General Problems Parsing Perl Code
Default Keywords:    Which Keywords Will xgettext Look For?
Special Keywords:    How to Extract Hash Keys
Quote-like Expressions:    What are Strings And Quote-like Expressions?
Interpolation I:    Invalid String Interpolation
Interpolation II:    Valid String Interpolation
Parentheses:    When To Use Parentheses
Long Lines:    How To Grok with Long Lines
Perl Pitfalls:    Bugs, Pitfalls, and Things That Do Not Work

Next: PHP, Previous: Tcl, Up: List of Programming Languages   [Contents][Index]