http://www.perlmonks.org?node_id=723699

Hope others find "peg" as useful as it has been to me. Give it a try.

Announce - "peg", yet another (GNU) grep like Perl program.

The latest version is available at:

http://cpan.mirrors.uk2.net/authors/id/A/AD/ADAVIES/

Features:

Replies are listed 'Best First'.
Re: peg - Perl _expression_ (GNU) grep script
by ambrus (Abbot) on Nov 14, 2008 at 19:45 UTC

      I've looked at both diotalevi's grep and ack, but not cgrep. Thanks for the link.

Re: peg - Perl _expression_ (GNU) grep script
by holli (Monsignor) on Nov 14, 2008 at 19:02 UTC
    How would I make this ignore all files beyound a .cvs or .svn directory? Also: ++


    holli, /regexed monk/
      To skip files beneath a directory, use -p with a suitable regex against the $File variable. eg
      peg -p "$File !~ m#(^|/)(?:\.cvs|\.svn)/#" foobar
      But you'll quickly tire of typing that, so add this to your PEG_OPTIONS in your "peg_ini.pl" file:
      $ENV{'PEG_OPTIONS'} .= ' -p "$File !~ m#(^|/)(?:\.cvs|\.svn)/#" ';
        This can now be done much more simply - just add:
        push @Exclude_dirs, ".svn", ".cvs";
        ... to one of the "peg_ini.pl" files.
Re: peg - Perl _expression_ (GNU) grep script
by rovf (Priest) on Nov 19, 2008 at 09:40 UTC

    When I run peg, I get the message

    peg: failed to load Win32::Console::ANSI
    which is strange because I can't find any reference to thie module in the peg source. Aside from this message, the program seems to work fine. Any idea where this message comes from?

    -- 
    Ronald Fischer <ynnor@mm.st>

      When I run peg, I get the messagec peg: failed to load Win32::Console::ANSI

      which is strange because I can't find any reference to thie module in the peg source. Aside from this message, the program seems to work fine. Any idea where this message comes from?

      This module is needed on Win32 to color the output. It is required at line 500 (not sure how you missed it!). NB. you do not call into it... it works by a form of side affect. Check it's docs (see below). If you're not on Win32, then something has gone screwy with the  $Is_Win32 varable.

      Firstly i would highly reccomend installing this as once you've seen how easy and useful writing coloured output is, you'll likely find uses for it your existing scripts.

      Failing that, add  $ENV{PEG_NO_WIN32_CONSOLE_ANSI} = 1 to your peg_ini.pl file and this will stop you seeing the error message. (Yes - it's a hack :-)

      From the modules POD:

      =head1 DESCRIPTION Windows NT/2000/XP does not support ANSI escape sequences in Win32 Con +sole applications. This module emulates an ANSI console for the script that + uses it and also converts the characters from Windows code page to DOS code + page (the so-called ANSI to OEM conversion). This conversion permits the di +splay of the accented characters in the console like in the Windows- based e +ditor used to type the script.
        This module is needed on Win32 to color the output. It is required at line 500 (not sure how you missed it!).

        Neither do I. I looked at it with the 'less' pager and used the search function of less to look for ANSI. I have no idea why I got no match - now I'm doing the same, I can clearly find it.

        Failing that, add $ENV{PEG_NO_WIN32_CONSOLE_ANSI} = 1 to your peg_ini.pl file and this will stop you seeing the error message.

        Wouldn't it make sense to eval {} the loading of the ANSI module and simply switch off colouring if the module is not available? You do it at one place, but not at the other (which makes me wonder why you require the module twice.

        -- 
        Ronald Fischer <ynnor@mm.st>