in reply to Perl index

I wrote a test script for your YAML. It checks for completeness. There's a bunch of omissions in your YAML file.

#!perl -w use strict; use YAML; use LWP::Simple; use Test::More; use B::Keywords; my $yaml = get( 'http://www.szabgab.com/articles/perlindex.yaml' ); my $index = Load( $yaml ); my %indexed_keywords; @indexed_keywords{ map keys %$_, values %$index } = (); my %expected_keywords; @expected_keywords{ @B::Keywords::Symbols, @B::Keywords::Barewords } = (); my @all_keywords = sort { lc($a) cmp lc($b) } do { my %uniq; grep !$uniq{$_}++, keys( %indexed_keywords ), keys( %expected_keywords ) }; plan tests => scalar @all_keywords; for my $keyword ( @all_keywords ) { ok( exists $indexed_keywords{$keyword}, "$keyword is indexed" ); # ok( exists $expected_keywords{$keyword}, # "$keyword is in the \"official\" list" ); } __END__ not ok 2 - $! is indexed # Failed test (TestIndex.pl at line 27) not ok 3 - $" is indexed # Failed test (TestIndex.pl at line 27) not ok 4 - $\# is indexed # Failed test (TestIndex.pl at line 27) not ok 5 - $$ is indexed # Failed test (TestIndex.pl at line 27) not ok 6 - $% is indexed # Failed test (TestIndex.pl at line 27) not ok 9 - $( is indexed # Failed test (TestIndex.pl at line 27) not ok 10 - $) is indexed # Failed test (TestIndex.pl at line 27) not ok 11 - $* is indexed # Failed test (TestIndex.pl at line 27) ok 12 - $+ is indexed not ok 13 - $, is indexed # Failed test (TestIndex.pl at line 27) not ok 14 - $- is indexed # Failed test (TestIndex.pl at line 27) not ok 15 - $. is indexed # Failed test (TestIndex.pl at line 27) not ok 16 - $/ is indexed # Failed test (TestIndex.pl at line 27) not ok 17 - $0 is indexed # Failed test (TestIndex.pl at line 27) not ok 18 - $: is indexed # Failed test (TestIndex.pl at line 27) not ok 19 - $; is indexed # Failed test (TestIndex.pl at line 27) not ok 20 - $< is indexed # Failed test (TestIndex.pl at line 27) not ok 22 - $= is indexed # Failed test (TestIndex.pl at line 27) not ok 23 - $> is indexed # Failed test (TestIndex.pl at line 27) not ok 24 - $? is indexed # Failed test (TestIndex.pl at line 27) not ok 25 - $@ is indexed # Failed test (TestIndex.pl at line 27) not ok 26 - $[ is indexed # Failed test (TestIndex.pl at line 27) not ok 27 - $\ is indexed # Failed test (TestIndex.pl at line 27) not ok 28 - $] is indexed # Failed test (TestIndex.pl at line 27) not ok 29 - $^ is indexed # Failed test (TestIndex.pl at line 27) not ok 30 - $^A is indexed # Failed test (TestIndex.pl at line 27) not ok 31 - $^C is indexed # Failed test (TestIndex.pl at line 27) not ok 32 - $^D is indexed # Failed test (TestIndex.pl at line 27) not ok 33 - $^E is indexed # Failed test (TestIndex.pl at line 27) not ok 34 - $^F is indexed # Failed test (TestIndex.pl at line 27) not ok 35 - $^H is indexed # Failed test (TestIndex.pl at line 27) not ok 36 - $^I is indexed # Failed test (TestIndex.pl at line 27) not ok 37 - $^L is indexed # Failed test (TestIndex.pl at line 27) not ok 38 - $^M is indexed # Failed test (TestIndex.pl at line 27) not ok 40 - $^O is indexed # Failed test (TestIndex.pl at line 27) not ok 41 - $^P is indexed # Failed test (TestIndex.pl at line 27) not ok 42 - $^R is indexed # Failed test (TestIndex.pl at line 27) not ok 43 - $^S is indexed # Failed test (TestIndex.pl at line 27) not ok 44 - $^T is indexed # Failed test (TestIndex.pl at line 27) not ok 45 - $^V is indexed # Failed test (TestIndex.pl at line 27) not ok 46 - $^W is indexed # Failed test (TestIndex.pl at line 27) not ok 47 - $^X is indexed # Failed test (TestIndex.pl at line 27) not ok 51 - $ACCUMULATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 55 - $BASETIME is indexed # Failed test (TestIndex.pl at line 27) not ok 56 - $CHILD_ERROR is indexed # Failed test (TestIndex.pl at line 27) not ok 57 - $COMPILING is indexed # Failed test (TestIndex.pl at line 27) not ok 58 - $DEBUGGING is indexed # Failed test (TestIndex.pl at line 27) not ok 59 - $EFFECTIVE_GROUP_ID is indexed # Failed test (TestIndex.pl at line 27) not ok 60 - $EFFECTIVE_USER_ID is indexed # Failed test (TestIndex.pl at line 27) not ok 61 - $EGID is indexed # Failed test (TestIndex.pl at line 27) not ok 63 - $ERRNO is indexed # Failed test (TestIndex.pl at line 27) not ok 64 - $EUID is indexed # Failed test (TestIndex.pl at line 27) not ok 65 - $EVAL_ERROR is indexed # Failed test (TestIndex.pl at line 27) not ok 66 - $EXCEPTIONS_BEING_CAUGHT is indexed # Failed test (TestIndex.pl at line 27) not ok 67 - $EXECUTABLE_NAME is indexed # Failed test (TestIndex.pl at line 27) not ok 68 - $EXTENDED_OS_ERROR is indexed # Failed test (TestIndex.pl at line 27) not ok 69 - $FORMAT_FORMFEED is indexed # Failed test (TestIndex.pl at line 27) not ok 70 - $FORMAT_LINE_BREAK_CHARACTERS is indexed # Failed test (TestIndex.pl at line 27) not ok 71 - $FORMAT_LINES_LEFT is indexed # Failed test (TestIndex.pl at line 27) not ok 72 - $FORMAT_LINES_PER_PAGE is indexed # Failed test (TestIndex.pl at line 27) not ok 73 - $FORMAT_NAME is indexed # Failed test (TestIndex.pl at line 27) not ok 74 - $FORMAT_PAGE_NUMBER is indexed # Failed test (TestIndex.pl at line 27) not ok 75 - $FORMAT_TOP_NAME is indexed # Failed test (TestIndex.pl at line 27) not ok 76 - $GID is indexed # Failed test (TestIndex.pl at line 27) not ok 77 - $INPLACE_EDIT is indexed # Failed test (TestIndex.pl at line 27) not ok 78 - $INPUT_LINE_NUMBER is indexed # Failed test (TestIndex.pl at line 27) not ok 79 - $INPUT_RECORD_SEPARATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 80 - $LAST_MATCH_END is indexed # Failed test (TestIndex.pl at line 27) not ok 82 - $LAST_REGEXP_CODE_RESULT is indexed # Failed test (TestIndex.pl at line 27) not ok 83 - $LIST_SEPARATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 85 - $MULTILINE_MATCHING is indexed # Failed test (TestIndex.pl at line 27) not ok 86 - $NR is indexed # Failed test (TestIndex.pl at line 27) not ok 87 - $OFMT is indexed # Failed test (TestIndex.pl at line 27) not ok 88 - $OFS is indexed # Failed test (TestIndex.pl at line 27) not ok 89 - $ORS is indexed # Failed test (TestIndex.pl at line 27) not ok 90 - $OS_ERROR is indexed # Failed test (TestIndex.pl at line 27) not ok 91 - $OSNAME is indexed # Failed test (TestIndex.pl at line 27) not ok 92 - $OUTPUT_AUTO_FLUSH is indexed # Failed test (TestIndex.pl at line 27) not ok 93 - $OUTPUT_FIELD_SEPARATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 94 - $OUTPUT_RECORD_SEPARATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 95 - $PERL_VERSION is indexed # Failed test (TestIndex.pl at line 27) not ok 96 - $PERLDB is indexed # Failed test (TestIndex.pl at line 27) not ok 97 - $PID is indexed # Failed test (TestIndex.pl at line 27) not ok 100 - $PROCESS_ID is indexed # Failed test (TestIndex.pl at line 27) not ok 101 - $PROGRAM_NAME is indexed # Failed test (TestIndex.pl at line 27) not ok 102 - $REAL_GROUP_ID is indexed # Failed test (TestIndex.pl at line 27) not ok 103 - $REAL_USER_ID is indexed # Failed test (TestIndex.pl at line 27) not ok 104 - $RS is indexed # Failed test (TestIndex.pl at line 27) not ok 118 - $SUBSCRIPT_SEPARATOR is indexed # Failed test (TestIndex.pl at line 27) not ok 119 - $SUBSEP is indexed # Failed test (TestIndex.pl at line 27) not ok 120 - $SYSTEM_FD_MAX is indexed # Failed test (TestIndex.pl at line 27) not ok 121 - $UID is indexed # Failed test (TestIndex.pl at line 27) not ok 122 - $WARNING is indexed # Failed test (TestIndex.pl at line 27) not ok 123 - ${^WARNING_BITS} is indexed # Failed test (TestIndex.pl at line 27) not ok 124 - ${^WIDE_SYSTEM_CALLS} is indexed # Failed test (TestIndex.pl at line 27) not ok 125 - $| is indexed # Failed test (TestIndex.pl at line 27) not ok 126 - $~ is indexed # Failed test (TestIndex.pl at line 27) not ok 128 - %! is indexed # Failed test (TestIndex.pl at line 27) not ok 129 - %^H is indexed # Failed test (TestIndex.pl at line 27) not ok 130 - %ENV is indexed # Failed test (TestIndex.pl at line 27) not ok 131 - %INC is indexed # Failed test (TestIndex.pl at line 27) not ok 132 - %OVERLOAD is indexed # Failed test (TestIndex.pl at line 27) not ok 133 - %SIG is indexed # Failed test (TestIndex.pl at line 27) not ok 135 - *ARGV is indexed # Failed test (TestIndex.pl at line 27) not ok 165 - @+ is indexed # Failed test (TestIndex.pl at line 27) not ok 166 - @- is indexed # Failed test (TestIndex.pl at line 27) not ok 167 - @_ is indexed # Failed test (TestIndex.pl at line 27) not ok 165 - @+ is indexed # Failed test (TestIndex.pl at line 27) not ok 166 - @- is indexed # Failed test (TestIndex.pl at line 27) not ok 167 - @_ is indexed # Failed test (TestIndex.pl at line 27) not ok 169 - @INC is indexed # Failed test (TestIndex.pl at line 27) not ok 170 - @LAST_MATCH_START is indexed # Failed test (TestIndex.pl at line 27) not ok 171 - __DATA__ is indexed # Failed test (TestIndex.pl at line 27) not ok 172 - __END__ is indexed # Failed test (TestIndex.pl at line 27) not ok 173 - __FILE__ is indexed # Failed test (TestIndex.pl at line 27) not ok 174 - __LINE__ is indexed # Failed test (TestIndex.pl at line 27) not ok 175 - __PACKAGE__ is indexed # Failed test (TestIndex.pl at line 27) not ok 188 - and is indexed # Failed test (TestIndex.pl at line 27) not ok 190 - ARGV is indexed # Failed test (TestIndex.pl at line 27) not ok 191 - ARGVOUT is indexed # Failed test (TestIndex.pl at line 27) not ok 203 - AUTOLOAD is indexed # Failed test (TestIndex.pl at line 27) not ok 206 - BEGIN is indexed # Failed test (TestIndex.pl at line 27) not ok 227 - CHECK is indexed # Failed test (TestIndex.pl at line 27) not ok 256 - CORE is indexed # Failed test (TestIndex.pl at line 27) not ok 277 - DESTROY is indexed # Failed test (TestIndex.pl at line 27) not ok 297 - END is indexed # Failed test (TestIndex.pl at line 27) not ok 307 - eq is indexed # Failed test (TestIndex.pl at line 27) not ok 372 - ge is indexed # Failed test (TestIndex.pl at line 27) not ok 428 - gt is indexed # Failed test (TestIndex.pl at line 27) not ok 439 - INIT is indexed # Failed test (TestIndex.pl at line 27) not ok 464 - le is indexed # Failed test (TestIndex.pl at line 27) not ok 479 - lt is indexed # Failed test (TestIndex.pl at line 27) not ok 515 - ne is indexed # Failed test (TestIndex.pl at line 27) not ok 526 - NULL is indexed # Failed test (TestIndex.pl at line 27) not ok 534 - or is indexed # Failed test (TestIndex.pl at line 27) not ok 675 - STDERR is indexed # Failed test (TestIndex.pl at line 27) not ok 676 - STDIN is indexed # Failed test (TestIndex.pl at line 27) not ok 677 - STDOUT is indexed # Failed test (TestIndex.pl at line 27) not ok 792 - xor is indexed # Failed test (TestIndex.pl at line 27) # Looks like you failed 135 tests of 794.

Updated Steve_p - added readmore tags

Replies are listed 'Best First'.
Re^2: Perl index
by szabgab (Priest) on Jun 06, 2005 at 08:45 UTC
    thanks, that's huge help ...
    more work ahead with the index
    Could it also test for the exportable functions of all the standard modules ... ?

    thanks for the other suggestions such as STDIN too...

      I don't have any list of exportables from core perl modules. That's actually kind of hard because modules change more frequently than perl and its difficult to programatically detect what the exports are.