How does something like this sound for grouping predefined function names?
STRING chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct,
ord, q/STRING/, qq/STRING/, qx/STRING/, reverse, rindex,
sprintf, substr, uc, ucfirst
ARRAY pop, push, shift, splice, unshift
LIST grep, join, map, qw/STRING/, reverse, sort
HASH delete, each, exists, keys, values
Math abs, atan2, cos, exp, hex, int, log, rand, sin, sqrt, srand
Regexp m//, pos, quotemeta, s///, split, study, tr///, y///
Objects bless, dbmclose, dbmopen, import, no, ref, require, tie, untie,
use
Files -X, chdir, chmod, chown, chroot, glob, link, lstat, mkdir,
open, opendir, readlink, rename, rmdir, stat, symlink, unlink,
utime
I/O close, closedir, die, eof, fileno, flock, format, getc, print,
printf, read, readdir, rewinddir, seek, seekdir, select,
sysread, syswrite, tell, telldir, truncate, warn, write
PERL caller, defined, dump, eval, formline, local, my, reset,
scalar, undef, wantarray
Flow die, do, dump, eval, exit, goto, last, next, redo, return
Binary pack, read, sysread, syswrite, unpack, vec
Time gmtime, localtime
Admin endgrent, endhostent, endnetent, endprotoent, endpwent,
endservent, getgrent, getgrgid, getgrnam, gethostbyaddr,
gethostbyname, gethostent, getnetbyaddr, getnetbyname,
getnetent, getprotobyname, getprotobynumber, getprotoent,
getpwent, getpwnam, getpwuid, getservbyname, getservbyport,
getservent, setgrent, sethostent, setnetent, setprotoent,
setpwent, setservent
UNIX alarm, exec, fcntl, fork, getlogin, getpgrp, getppid,
getpriority, ioctl, kill, pipe, setpgrp, setpriority, sleep,
syscall, system, time, times, umask, wait, waitpid
Socket accept, bind, connect, getpeername, getsockname, getsockopt,
listen, recv, send, setsockopt, shutdown, socket, socketpair
SysV msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl,
shmget, shmread, shmwrite
DOS binmode
--tom
while (<DATA>) {
chomp;
($name, $type, $text) = split "\t", $_, 3;
for $type ( split /[,\s]+/, $type ) {
push @{$types{$type}}, $name;
}
}
foreach $type ( sort keys %types ) {
$list = join(", ", sort @{$types{$type}});
write;
}
format =
@<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$type, $list
~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$list
STRING chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct,
ord, q/STRING/, qq/STRING/, qx/STRING/, reverse, rindex,
sprintf, substr, uc, ucfirst
ARRAY pop, push, shift, splice, unshift
LIST grep, join, map, qw/STRING/, reverse, sort
HASH delete, each, exists, keys, values
Math abs, atan2, cos, exp, hex, int, log, rand, sin, sqrt, srand
Regexp m//, pos, quotemeta, s///, split, study, tr///, y///
Objects bless, dbmclose, dbmopen, import, no, ref, require, tie, untie,
use
Files -X, chdir, chmod, chown, chroot, glob, link, lstat, mkdir,
open, opendir, readlink, rename, rmdir, stat, symlink, unlink,
utime
I/O close, closedir, die, eof, fileno, flock, format, getc, print,
printf, read, readdir, rewinddir, seek, seekdir, select,
sysread, syswrite, tell, telldir, truncate, warn, write
PERL caller, defined, dump, eval, formline, local, my, reset,
scalar, undef, wantarray
Flow die, do, dump, eval, exit, goto, last, next, redo, return
Binary pack, read, sysread, syswrite, unpack, vec
Time gmtime, localtime
Admin endgrent, endhostent, endnetent, endprotoent, endpwent,
endservent, getgrent, getgrgid, getgrnam, gethostbyaddr,
gethostbyname, gethostent, getnetbyaddr, getnetbyname,
getnetent, getprotobyname, getprotobynumber, getprotoent,
getpwent, getpwnam, getpwuid, getservbyname, getservbyport,
getservent, setgrent, sethostent, setnetent, setprotoent,
setpwent, setservent
UNIX alarm, exec, fcntl, fork, getlogin, getpgrp, getppid,
getpriority, ioctl, kill, pipe, setpgrp, setpriority, sleep,
syscall, system, time, times, umask, wait, waitpid
Socket accept, bind, connect, getpeername, getsockname, getsockopt,
listen, recv, send, setsockopt, shutdown, socket, socketpair
SysV msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl,
shmget, shmread, shmwrite
DOS binmode
--tom
while (<DATA>) {
chomp;
($name, $type, $text) = split "\t", $_, 3;
for $type ( split /[,\s]+/, $type ) {
push @{$types{$type}}, $name;
}
}
foreach $type ( sort keys %types ) {
$list = join(", ", sort @{$types{$type}});
write;
}
format =
@<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$type, $list
~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$list