Perl %term% perl -d %1/%2 %term% perl %1/%2 1 0 5 pl pm cgi string1 " \("\|\n\) string2 ' \('\|\n\) string3 ` \(`\|\n\) arraylim $# \( \|\t\|\n\) comment \s*# \n vars \$[a-zA-Z_][a-zA-Z0-9_]* reference [\$\@\%]\$[a-zA-Z_][a-zA-Z0-9_]* deref -> array @[a-zA-Z_][a-zA-Z0-9_]* hash %[a-zA-Z_][a-zA-Z0-9_]* function_calls \&[a-zA-Z_][a-zA-Z0-9_]* keywords1 \b\(eq\|ne\|not\|or\|read\|keys\|chomp\|if\|else\|unless\|open\|close\|split\|for\|while\|foreach\|exit\|sub\|print\|use\|require\|elseif\|continue\|until\|do\|last\|next\|redo\|goto\|chop\|chr\|crypt\|hex\|index\|lc\|lcfirst\|length\|oct\|ord\|reverse\|rindex\|printf\|sprintf\|substr\|uc\|ucfirst\|pos\|quotemeta\|study\|abs\|atan2\|cos\|exp\|int\|log\|rand\|sin\|sqrt\|srand\|pop\|push\|shift\|splice\|unshift\|grep\|join\|map\|sort\|unpack\|pack\|delete\|each\|exists\|values\|binmode\|closedir\|dbmclose\|dbmopen\|die\|eof\|fileno\|flock\|format\|getc\|readdir\|rewinddir\|seek\|seekdir\|select\|syscall\|sysread\|sysseek\|syswrite\|tell\|telldir\|truncate\|warn\|write\|vec\|chdir\|chmod\|chown\|chroot\|fcntl\|glob\|ioctl\|link\|lstat\|mkdir\|opendir\|readlink\|rename\|rmdir\|stat\|symlink\|umask\|unlink\|utime\|caller\|dump\|eval\|return\|wantarray\|import\|local\|my\|package\|defined\|formline\|prototype\|reset\|scalar\|undef\|alarm\|exec\|fork\|getpgrp\|getppid\|getpriority\|kill\|pipe\|setpgrp\|setpriority\|sleep\|system\|times\|wait\|waitpid\|no\|bless\|ref\|tie\|tied\|untie\|accept\|bind\|connect\|getpeername\|getsockname\|getsockopt\|listen\|recv\|send\|setsockopt\|shutdown\|socket\|socketpair\|msgctl\|msgget\|msgrcv\|msgsnd\|semctl\|semget\|semop\|shmctl\|shmget\|shmread\|shmwrite\|endgrent\|endhostent\|endnetent\|endpwent\|getgrent\|getgrgid\|getgrnam\|getlogin\|getpwent\|getpwnam\|getpwuid\|setgrent\|setpwent\|endprotoent\|endservent\|gethostbyaddr\|gethostbyname\|gethostent\|getnetbyaddr\|getnetbyname\)\b keywords2 \b\(getnetent\|getprotobyname\|getprotobynumber\|getprotoent\|getservbyname\|getservbyport\|getservent\|sethostent\|setnetent\|setprotoent\|setservent\|gmtime\|localtime\|time\)\b hex #[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9] macros \b[A-Z][A-Z_][A-Z0-9_\-]+\b operators \(%\|&\|+\|-\|=\|==\|>=\|<=\|@\|\*\|\\\\\|/\|\\.\|<<\|>>\|!\|~\|||\|&&\) tags1 </?\(html\|ol\|ul\|li\|frameset\|frame\|head\|title\|body\|table\|tr\|td\|th\|img\|center\|div\|br\|b\|font\|a\|script\|hr\|input\|textarea\|form\|i\|p\|h[1-6]\|pre\|blockquote\) tags2 </?\(HTML\|OL\|UL\|LI\|FRAMESET\|FRAME\|HEAD\|TITLE\|BODY\|TABLE\|TR\|TD\|TH\|IMG\|CENTER\|DIV\|BR\|B\|FONT\|A\|SCRIPT\|HR\|INPUT\|TEXTAREA\|FORM\|I\|P\|H[1-6]\|PRE\|BLOCKQUOTE\) open < close > numbers \b[0-9][dh0-9\.]*\b keywords1 <.+>? \b\(address\|strong\|frameborder\|framespacing\|text\|links\|vlinks\|hidden\|method\|action\|password\|button\|value\|colspan\|rowspan\|cols\|rows\|background\|src\|border\|cellpadding\|cellspacing\|color\|vspace\|hspace\|height\|width\|marginheight\|marginwidth\|bgcolor\|size\|target\|href\|select\|option\|name\|type\|align\|valign\)\b keywords2 <.+>? \b\(ADDRESS\|STRONG\|FRAMEBORDER\|FRAMESPACING\|TEXT\|LINKS\|VLINKS\|HIDDEN\|METHOD\|ACTION\|PASSWORD\|BUTTON\|VALUE\|COLSPAN\|ROWSPAN\|COLS\|ROWS\|BACKGROUND\|SRC\|BORDER\|CELLPADDING\|CELLSPACING\|COLOR\|VSPACE\|HSPACE\|HEIGHT\|WIDTH\|MARGINHEIGHT\|MARGINWIDTH\|BGCOLOR\|SIZE\|TARGET\|HREF\|SELECT\|OPTION\|NAME\|TYPE\|ALIGN\|VALIGN\)\b import glimmer def perl_enter_callback(): insert = "\n" extralen = 0 slen = 0 file = glimmer.get_file_number() tstart = glimmer.line_start() tend = glimmer.current_position() if (tend-tstart) > 0: chars = glimmer.get_text(tstart, tend) slen = len(chars) if slen > 0: index = 0 while index < slen: c = chars[index] if c == '\t' or c == ' ': insert = insert + chars[index] index = index+1 else: break c = chars[slen-1] if c == '{': extralen = glimmer.get_file_tab_width(file) if glimmer.get_file_use_spaces(file): while extralen > 0: insert = insert + " " extralen = extralen-1 else: insert = insert + '\t' glimmer.insert(insert) glimmer.register_signal_hook("enter-pressed", perl_enter_callback) def perl_tab_callback(): tablen = 0 insertchars = "" file = glimmer.get_file_number() if glimmer.get_file_use_spaces(file): tablen = glimmer.get_file_tab_width(file) pos = glimmer.current_position() lstart = glimmer.line_start() if pos - lstart > 0: str1 = glimmer.get_text(lstart, pos) else: str1 = "" if glimmer.get_tab_stops(): str1 = string.expandtabs(str1, tablen) len1 = len(str1) del str1 tablen = tablen - (len1 % tablen) while tablen > 0: insertchars = insertchars + " " tablen = tablen-1 else: insertchars = insertchars + "\t" glimmer.insert(insertchars) glimmer.register_signal_hook("tab-pressed", perl_tab_callback) def insert_perl_comment(): glimmer.freeze() if glimmer.has_selection(): start = glimmer.selection_start() end = glimmer.selection_end() file = glimmer.get_file_number() glimmer.move(0) line1 = glimmer.line_by_pos(start) line2 = glimmer.line_by_pos(end) cur = line1 print start print end while cur <= line2: glimmer.move_to_col(0) glimmer.move_to_line(cur) glimmer.insert("#") cur = cur+1 glimmer.move_to(end+((line2-line1)+1)*2) else: glimmer.insert("#") glimmer.thaw() glimmer.add_sub_to_menu("_Insert/", "Perl", -1) glimmer.add_item_to_menu("_Insert/Perl/", "Comment (#)", "", "", -1, insert_perl_comment) glimmer.add_item_to_popup_menu("Comment (#)", -1, insert_perl_comment)