equal
deleted
inserted
replaced
|
1 #! /usr/bin/perl |
|
2 use 5.014; |
|
3 use strict; |
|
4 use warnings; |
|
5 use List::MoreUtils qw(uniq); |
|
6 |
|
7 my $what = shift // die "$0: Usage {main} [spec.xfpt]\n"; |
|
8 |
|
9 @ARGV = "$ENV{HOME}/src/exim/doc/doc-docbook/spec.xfpt" |
|
10 if not @ARGV; |
|
11 |
|
12 my $pattern = do { |
|
13 given ($what) { |
|
14 when ('main') { qr/^\.option\s(")?(?<item>\S+)(?(1)\1)\smain/ } |
|
15 when ('vars') { qr/^\.vitem\s&(?<item>\$\w+)/ } |
|
16 when ('ops') { qr/^\.vitem\s&\*(?<item>\$\{\w+:)/ } |
|
17 when ('conds') { qr/^\.vitem\s&\*(?<item>\w+)\&~\{/ } |
|
18 when ('funcs') { qr/^\.vitem\s(")?&\*(?<item>\$\{\w+)\{/ } |
|
19 default { die "$0: unknown search pattern\n" } |
|
20 } |
|
21 }; |
|
22 |
|
23 say join "\n", sort uniq map { /$pattern/ ? $+{item} : () } <>; |