perl = {}

function perl.get_keywords()
  local keywords0_set = "BEGIN END  if else while do for in break continue delete exit function return  print printf sprintf  system close getline next nextfile fflush  atan2 cos exp int log rand sin sqrt srand  asort asorti gensub sub gsub index length match split  strtonum substr tolower toupper  mktime strftime systime  and compl lshift or rshift xor  bindtextdomain dcgettext dcngettext  ARGC ARGIND ARGV BINMODE CONVFMT ENVIRON ERRNO FIELDWIDTHS  FILENAME FNR FS IGNORECASE LINT NF NR OFMT OFS ORS PROCINFO  RS RT RSTART RLENGTH SUBSEP TEXTDOMAIN"
  local keywords1_set = "NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD  BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK 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 lock log lstat lt map mkdir msgctl msgget msgrcv  msgsnd my ne next no not oct open opendir or ord our pack package  pipe pop pos print printf prototype push quotemeta qu  rand read readdir readline readlink readpipe recv redo  ref rename require reset return 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 sub substr symlink syscall sysopen sysread sysseek  system syswrite tell telldir tie tied time times truncate  uc ucfirst umask undef unless unlink unpack unshift untie until  use utime values vec wait waitpid wantarray warn while write  xor  given when default break say state UNITCHECK __SUB__ fc"
  return keywords0_set,keywords1_set
end

function perl.get_autocomplete()
  local autocomplete_set = "NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD  BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK 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 lock log lstat lt map mkdir msgctl msgget msgrcv  msgsnd my ne next no not oct open opendir or ord our pack package  pipe pop pos print printf prototype push quotemeta qu  rand read readdir readline readlink readpipe recv redo  ref rename require reset return 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 sub substr symlink syscall sysopen sysread sysseek  system syswrite tell telldir tie tied time times truncate  uc ucfirst umask undef unless unlink unpack unshift untie until  use utime values vec wait waitpid wantarray warn while write  xor  given when default break say state UNITCHECK __SUB__ fc"
  return autocomplete_set
end

function perl.get_reqular()
  local symbol_reqular_exp = "[ \\t]*sub[ \\t]+([_a-zA-Z]+[_a-zA-Z0-9]*)[ \\t]*\\{"
  return symbol_reqular_exp
end

function perl.create_bakup(path)
  local perl_code = {
    "user_perl = {}\n",
    "function user_perl.get_keywords()\n",
    "  local keywords0_set = \"BEGIN END  if else while do for in break continue delete exit function return  print printf sprintf  system close getline next nextfile fflush  atan2 cos exp int log rand sin sqrt srand  asort asorti gensub sub gsub index length match split  strtonum substr tolower toupper  mktime strftime systime  and compl lshift or rshift xor  bindtextdomain dcgettext dcngettext  ARGC ARGIND ARGV BINMODE CONVFMT ENVIRON ERRNO FIELDWIDTHS  FILENAME FNR FS IGNORECASE LINT NF NR OFMT OFS ORS PROCINFO  RS RT RSTART RLENGTH SUBSEP TEXTDOMAIN\"\n",
    "  local keywords1_set = \"NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD  BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK 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 lock log lstat lt map mkdir msgctl msgget msgrcv  msgsnd my ne next no not oct open opendir or ord our pack package  pipe pop pos print printf prototype push quotemeta qu  rand read readdir readline readlink readpipe recv redo  ref rename require reset return 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 sub substr symlink syscall sysopen sysread sysseek  system syswrite tell telldir tie tied time times truncate  uc ucfirst umask undef unless unlink unpack unshift untie until  use utime values vec wait waitpid wantarray warn while write  xor  given when default break say state UNITCHECK __SUB__ fc\"\n",
    "  return keywords0_set,keywords1_set\n",
    "end\n",
    "\n",
    "function user_perl.get_autocomplete()\n",
    "  local autocomplete_set = \"NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD  BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK 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 lock log lstat lt map mkdir msgctl msgget msgrcv  msgsnd my ne next no not oct open opendir or ord our pack package  pipe pop pos print printf prototype push quotemeta qu  rand read readdir readline readlink readpipe recv redo  ref rename require reset return 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 sub substr symlink syscall sysopen sysread sysseek  system syswrite tell telldir tie tied time times truncate  uc ucfirst umask undef unless unlink unpack unshift untie until  use utime values vec wait waitpid wantarray warn while write  xor  given when default break say state UNITCHECK __SUB__ fc\"\n",
    "  return autocomplete_set\n",
    "end\n",
    "\n",
    "function user_perl.get_reqular()\n",
    "  local symbol_reqular_exp = \"[ \\\\t]*sub[ \\\\t]+([_a-zA-Z]+[_a-zA-Z0-9]*)[ \\\\t]*\\\\{\"\n",
    "  return symbol_reqular_exp\n",
    "end\n",
    "return user_perl",
  }
  local shell_code = table.concat(perl_code)
  eu_core.save_file(path, shell_code)
  shell_code = nil
  perl_code = nil
end

return perl