Каков наилучший способ получить все встроенные функции Perl в виде списка? - PullRequest
6 голосов
/ 17 июля 2011

Я пытаюсь обновить xml-файл для подсветки синтаксиса, и поэтому мне было интересно, как проще всего получить список всех встроенных функций Perl.

Ответы [ 4 ]

9 голосов
/ 17 июля 2011

Вот быстрая реализация идеи cnicutar:

use Pod::Find qw(pod_where);

my $perlfunc_path = pod_where({ -inc => 1 }, 'perlfunc');

open my $in, "<", $perlfunc_path or die "$perlfunc_path: $!";
while(<$in>) {
    last if /=head2 Alphabetical/;
}

while(<$in>) {
    print "$1\n" if /=item (.{2,})/;
}

Дает вам список, включающий такие параметры, как:

-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X
abs VALUE
abs
...
5 голосов
/ 17 июля 2011

Посмотрите на файл toke.c в источнике perl:

  $ perl -nE 'next unless /case KEY_(\S+):/; say $1' toke.c | sort | uniq

Вы найдете много вещей, которые не будут отображаться в perlfunc . Однако это зависит от того, как вы хотите сегментировать различные вещи, которые вы хотите раскрасить.

Вы также можете посмотреть PPI , статический синтаксический анализатор Perl или существующие подсветки синтаксиса Perl.

3 голосов
/ 17 июля 2011

Я бы проанализировал perldoc perlfunc (часть "Функции Perl по категориям").

0 голосов
/ 27 октября 2013

Я столкнулся с той же проблемой только сейчас, и

egrep '^=item' /usr/lib/perl5/5.10.0/pod/perlfunc.pod | perl -anle '$F[1]=~s/\W//g; print $F[1]' | sort | uniq

работал для меня (но, будьте осторожны, он не идеален)

...