    SyntaxHighlighter
    http://alexgorbatchev.com/SyntaxHighlighter

    SyntaxHighlighter is donationware. If you are using it, please donate.
    http://alexgorbatchev.com/SyntaxHighlighter/donate.html

    @version
    3.0.83 (July 02 2010)

    @copyright
    Copyright (C) 2004-2010 Alex Gorbatchev.

    @license
    Dual licensed under the MIT and GPL licenses.

;(function() {

    // CommonJS
    typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;

    function Brush()
    {
            // Contributed by David Simmons-Duffin and Marty Kube

            var funcs =
                    'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' +
                    'chroot close closedir connect cos crypt defined delete each endgrent ' +
                    'endhostent endnetent endprotoent endpwent endservent eof exec exists ' +
                    'exp fcntl fileno flock fork format formline 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 grep hex index int ioctl join keys kill lc lcfirst length link ' +
                    'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' +
                    'oct open opendir ord pack pipe pop pos print printf prototype push ' +
                    'quotemeta rand read readdir readline readlink readpipe recv rename ' +
                    'reset reverse rewinddir rindex rmdir 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 substr symlink syscall sysopen sysread sysseek ' +
                    'system syswrite tell telldir time times tr truncate uc ucfirst umask ' +
                    'undef unlink unpack unshift utime values vec wait waitpid warn write';

            var keywords =
                    'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
                    'for foreach goto if import last local my next no our package redo ref ' +
                    'require return sub tie tied unless untie until use wantarray while';

            this.regexList = [
                    { regex: new RegExp('#[^!].*$', 'gm'),                                  css: 'comments' },
                    { regex: new RegExp('^\\s*#!.*$', 'gm'),                                css: 'preprocessor' }, // shebang
                    { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
                    { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
                    { regex: new RegExp('(\\$|@|%)\\w+', 'g'),                              css: 'variable' },
                    { regex: new RegExp(this.getKeywords(funcs), 'gmi'),    css: 'functions' },
                    { regex: new RegExp(this.getKeywords(keywords), 'gm'),  css: 'keyword' }
                ];

            this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
    }

    Brush.prototype = new SyntaxHighlighter.Highlighter();
    Brush.aliases           = ['perl', 'Perl', 'pl'];

    SyntaxHighlighter.brushes.Perl = Brush;

    // CommonJS
    typeof(exports) != 'undefined' ? exports.Brush = Brush : null;

})();