/usr/share/enscript/hl/perl.st is in enscript 1.6.5.90-2+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | /**
* Name: perl
* Description: Perl programming language.
*
* Author: Jim Villani, Logistics Management Institute (jvillani@lmi.org)
* perl_pod mods by Gregor Purdy (gregor@focusresearch.com)
*/
state perl_pod extends Highlight
{
/\\\\./ {
language_print ($0);
}
/^=cut\s*$/ {
language_print ($0);
return;
}
}
state perl_comment extends Highlight
{
/\*\\\// {
language_print ($0);
return;
}
}
state perl_dquot_string extends Highlight
{
/\\\\./ {
language_print ($0);
}
/\"/ {
language_print ($0);
return;
}
}
state perl_quot_string extends Highlight
{
/\\\\./ {
language_print ($0);
}
/[\']/ {
language_print ($0);
return;
}
}
state perl_bquot_string extends Highlight
{
/\\\\./ {
language_print ($0);
}
/`/ {
language_print ($0);
return;
}
}
state perl extends HighlightEntry
{
/* stuff after $# is a variable, not a comment */
/\$#\w+/ {
language_print ($0);
}
/* Comments. */
/#.*$/ {
comment_face (true);
language_print ($0);
comment_face (false);
}
/* Ignore escaped quote marks */
/\\\"/ {
language_print ($0);
}
/\\\'/ {
language_print ($0);
}
/\\\`/ {
language_print ($0);
}
/* stuff after a -> is a method,
* don't bold just because it looks like a keyword
*/
/->\w+/ {
language_print ($0);
}
/* stuff between a - and a => is a named parameter,
* don't bold just because it looks like a keyword
*/
/-\w+=>/ {
language_print ($0);
}
/* In cgi files, JavaScript might be embedded, so we need to look out
* for the JavaScript comments, because they might contain something
* we don't like, like a contraction (don't, won't, etc.)
* We won't put them in comment face, because they are not perl
* comments.
*/
/\/\// {
language_print ($0);
call (eat_one_line);
}
/* String constants. */
/\"/ {
string_face (true);
language_print ($0);
call (perl_dquot_string);
string_face (false);
}
/[\']/ {
string_face (true);
language_print ($0);
call (perl_quot_string);
string_face (false);
}
/* Backquoted command string */
/`/ {
string_face (true);
language_print ($0);
call (perl_bquot_string);
string_face (false);
}
/* Variables */
/[$%@&]+\w+/ {
language_print ($0);
}
/* Keywords. From perl distribution's toke.c
abs accept alarm and atan2 bind binmode bless caller chdir chmod
chomp chop chown chr chroot close closedir cmp connect continue cos
crypt dbmclose dbmopen defined delete die do dump each else elsif
endgrent endhostent endnetent endprotoent endpwent endservent eof
eq eval exec exists exit exp fcntl fileno flock for foreach fork
format formline ge getc getgrent getgrgid getgrnam gethostbyaddr
gethostbyname gethostent getlogin getnetbyaddr getnetbyname
getnetent getpeername getpgrp getppid getpriority getprotobyname
getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname
getservbyport getservent getsockname getsockopt glob gmtime goto
grep gt hex if index int ioctl join keys kill last lc lcfirst le
length link listen local localtime log lstat lt m map mkdir msgctl
msgget msgrcv msgsnd my ne new next no not oct open opendir or ord
pack package pipe pop pos print printf prototype push q qq quotemeta
qw qx rand read readdir readline readlink readpipe recv redo ref
rename require reset return reverse rewinddir rindex rmdir s scalar
seek seekdir select semctl semget semop send setgrent sethostent
setnetent setpgrp setpriority setprotoent setpwent setservent
setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep
socket socketpair sort splice split sprintf sqrt srand stat study
sub substr symlink syscall sysopen sysread sysseek system syswrite
tell telldir tie tied time times tr truncate uc ucfirst umask undef
unless unlink unpack unshift untie until use utime values vec wait
waitpid wantarray warn while write x xor y
*/
/\b(a(bs|ccept|larm|nd|tan2)|b(in(d|mode)|less)|c(aller|h(dir|mod\
|o(mp|p|wn)|r(|oot))|lose(|dir)|mp|o(n(nect|tinue)|s)|rypt)\
|d(bm(close|open)|e(fined|lete)|ie|o|ump)|e(ach|ls(e|if)|nd(gr|host|net|proto\
|pw|serv)ent|of|q|val|x(ec|i(sts|t)|p))|f(cntl|ileno|lock|or(|each|k\
|m(at|line)))|g(e(|t(c|gr(ent|gid|nam)|host(by(addr|name)|ent)|login\
|net(by(addr|name)|ent)|p(eername|grp|pid|riority|roto(by(addr|name|number)\
|ent)|w(ent|nam|uid))|s(erv(by(name|port)|ent)|ock(name|opt))))|lob|mtime\
|oto|rep|t)|hex|i(f|n(t|dex)|octl)|join|k(eys|ill)|l(ast|c(|first)|e(|ngth)\
|i(nk|sten)|o(cal(|time)|g)|stat|t)|m|m(ap|kdir|sg(ctl|get|rcv|snd)|y)\
|n(e(|w|xt)|o(|t))|o(ct|pen(|dir)|r(|d))|p(ack(|age)|ipe|o(p|s)|r(int(|f)\
|ototype)|ush)|q(|q|uotemeta|w|x)|r(and|e(a(d(|dir|lin(e|k)|pipe))|cv\
|do|f|name|quire|set|turn|verse|winddir)|index|mdir)|s(|calar|e(e(k|kdir)\
|lect|m(ctl|get|op)|nd|t((gr|host|net)ent|p(grp|r(iority|otoent)|went)\
|s(ervent|ockopt)))|h(ift|m(ctl|get|read|write)|utdown)|in|leep|o(cke(t|tpair)\
|rt)|p(li(ce|t)|rintf)|qrt|rand|t(at|udy)|u(b|bstr)|y(mlink|s(call|open|read\
|s(eek|tem)|write)))|t(ell(|dir)|i(e|ed|m(e|es))|r(|uncate))|u(c(|first)\
|mask|n(def|l(ess|ink)|pack|shift|ti(e|l))|se|time)|v(alues|ec)|w(a(i(t(|pid))\
|ntarray|rn)|hile|rite)|x(|or)|y)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/* POD. */
/^=(pod|head1|head2|item|over|back|for|begin|end)\b.*$/ {
language_print ($0);
call (perl_pod);
}
}
/*
Local variables:
mode: c
End:
*/
|