| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | 
							- /*
 
- Language: Perl
 
- Author: Peter Leonov <[email protected]>
 
- Category: common
 
- */
 
- function(hljs) {
 
-   var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +
 
-     'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +
 
-     'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +
 
-     'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +
 
-     'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +
 
-     'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +
 
-     'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +
 
-     'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +
 
-     'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +
 
-     'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +
 
-     'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +
 
-     'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +
 
-     'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +
 
-     'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +
 
-     'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +
 
-     'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +
 
-     'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +
 
-     'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +
 
-     'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';
 
-   var SUBST = {
 
-     className: 'subst',
 
-     begin: '[$@]\\{', end: '\\}',
 
-     keywords: PERL_KEYWORDS
 
-   };
 
-   var METHOD = {
 
-     begin: '->{', end: '}'
 
-     // contains defined later
 
-   };
 
-   var VAR = {
 
-     variants: [
 
-       {begin: /\$\d/},
 
-       {begin: /[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},
 
-       {begin: /[\$%@][^\s\w{]/, relevance: 0}
 
-     ]
 
-   };
 
-   var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];
 
-   var PERL_DEFAULT_CONTAINS = [
 
-     VAR,
 
-     hljs.HASH_COMMENT_MODE,
 
-     hljs.COMMENT(
 
-       '^\\=\\w',
 
-       '\\=cut',
 
-       {
 
-         endsWithParent: true
 
-       }
 
-     ),
 
-     METHOD,
 
-     {
 
-       className: 'string',
 
-       contains: STRING_CONTAINS,
 
-       variants: [
 
-         {
 
-           begin: 'q[qwxr]?\\s*\\(', end: '\\)',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: 'q[qwxr]?\\s*\\[', end: '\\]',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: 'q[qwxr]?\\s*\\{', end: '\\}',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: 'q[qwxr]?\\s*\\|', end: '\\|',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: 'q[qwxr]?\\s*\\<', end: '\\>',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: 'qw\\s+q', end: 'q',
 
-           relevance: 5
 
-         },
 
-         {
 
-           begin: '\'', end: '\'',
 
-           contains: [hljs.BACKSLASH_ESCAPE]
 
-         },
 
-         {
 
-           begin: '"', end: '"'
 
-         },
 
-         {
 
-           begin: '`', end: '`',
 
-           contains: [hljs.BACKSLASH_ESCAPE]
 
-         },
 
-         {
 
-           begin: '{\\w+}',
 
-           contains: [],
 
-           relevance: 0
 
-         },
 
-         {
 
-           begin: '\-?\\w+\\s*\\=\\>',
 
-           contains: [],
 
-           relevance: 0
 
-         }
 
-       ]
 
-     },
 
-     {
 
-       className: 'number',
 
-       begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
 
-       relevance: 0
 
-     },
 
-     { // regexp container
 
-       begin: '(\\/\\/|' + hljs.RE_STARTERS_RE + '|\\b(split|return|print|reverse|grep)\\b)\\s*',
 
-       keywords: 'split return print reverse grep',
 
-       relevance: 0,
 
-       contains: [
 
-         hljs.HASH_COMMENT_MODE,
 
-         {
 
-           className: 'regexp',
 
-           begin: '(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*',
 
-           relevance: 10
 
-         },
 
-         {
 
-           className: 'regexp',
 
-           begin: '(m|qr)?/', end: '/[a-z]*',
 
-           contains: [hljs.BACKSLASH_ESCAPE],
 
-           relevance: 0 // allows empty "//" which is a common comment delimiter in other languages
 
-         }
 
-       ]
 
-     },
 
-     {
 
-       className: 'function',
 
-       beginKeywords: 'sub', end: '(\\s*\\(.*?\\))?[;{]', excludeEnd: true,
 
-       relevance: 5,
 
-       contains: [hljs.TITLE_MODE]
 
-     },
 
-     {
 
-       begin: '-\\w\\b',
 
-       relevance: 0
 
-     },
 
-     {
 
-       begin: "^__DATA__$",
 
-       end: "^__END__$",
 
-       subLanguage: 'mojolicious',
 
-       contains: [
 
-         {
 
-             begin: "^@@.*",
 
-             end: "$",
 
-             className: "comment"
 
-         }
 
-       ]
 
-     }
 
-   ];
 
-   SUBST.contains = PERL_DEFAULT_CONTAINS;
 
-   METHOD.contains = PERL_DEFAULT_CONTAINS;
 
-   return {
 
-     aliases: ['pl', 'pm'],
 
-     lexemes: /[\w\.]+/,
 
-     keywords: PERL_KEYWORDS,
 
-     contains: PERL_DEFAULT_CONTAINS
 
-   };
 
- }
 
 
  |