Acme-CPANModules-Import-CPANRatings-User-stevenharyanto

 view release on metacpan or  search on metacpan

LICENSE  view on Meta::CPAN

    a) cause the modified files to carry prominent notices stating that
    you changed the files and the date of any change; and

    b) cause the whole of any work that you distribute or publish, that
    in whole or in part contains the Program or any part thereof, either
    with or without modifications, to be licensed at no charge to all
    third parties under the terms of this General Public License (except
    that you may choose to grant warranty protection to some or all
    third parties, at your option).

    c) If the modified program normally reads commands interactively when
    run, you must cause it, when started running for such interactive use
    in the simplest and most usual way, to print or display an
    announcement including an appropriate copyright notice and a notice
    that there is no warranty (or else, saying that you provide a
    warranty) and that users may redistribute the program under these
    conditions, and telling the user how to view a copy of this General
    Public License.

    d) You may charge a fee for the physical act of transferring a
    copy, and you may at your option offer warranty protection in

LICENSE  view on Meta::CPAN

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) 19xx name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  program `Gnomovision' (a program to direct compilers to make passes
  at assemblers) written by James Hacker.

META.json  view on Meta::CPAN

                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@Author::PERLANCAR/postlude",
                        "version" : "4.019"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongComplete",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongComplete",
                        "version" : "0.08"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongSubcommand",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongSubcommand",
                        "version" : "0.04"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongMore",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongMore",
                        "version" : "0.001"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Homepage::DefaultCPAN",
                        "name" : "@Author::PERLANCAR/Homepage::DefaultCPAN",

META.yml  view on Meta::CPAN

              version: '4.019'
            -
              class: Pod::Weaver::Section::Region
              name: '@Author::PERLANCAR/postlude'
              version: '4.019'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongComplete
              name: '@Author::PERLANCAR/Completion::GetoptLongComplete'
              version: '0.08'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongSubcommand
              name: '@Author::PERLANCAR/Completion::GetoptLongSubcommand'
              version: '0.04'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongMore
              name: '@Author::PERLANCAR/Completion::GetoptLongMore'
              version: '0.001'
            -
              class: Pod::Weaver::Section::Homepage::DefaultCPAN
              name: '@Author::PERLANCAR/Homepage::DefaultCPAN'
              version: '0.05'
            -

README  view on Meta::CPAN

        Instead of just printing some info, why not make it an Acme::PM or
        Acme::PerlMongers like Acme::CPANAuthors? Various stats can then be
        produced about the various Perl Mongers. <br>

    App::multiwhich
        Note that File::Which can also search for all matches too if you use
        it in a list context, e.g. @paths = which('foo'). File::Which also
        comes with a pwhich CLI utility which also accepts multiple
        arguments and has the -a switch to print all matches. The output
        format is slightly different than 'multiwhich' though. <br><br>In
        fact, the Unix 'which' command (or at least its Debian variant) also
        sports the -a switch.

    Object::Anon
        Author: ROBN <https://metacpan.org/author/ROBN>

        Nice idea. Some notes: 1) to be widely used, it really needs to be
        very efficient; 2) if the goal is simply to objectify a hash,
        perhaps Hash::Objectify or Object::From::Hash or Hash::To::Object
        (or Data::Objectify and so on) is a more descriptive name. <br>

README  view on Meta::CPAN

        Or at least pick the alternatives which are based on Getopt::Long,
        instead of those that reinvent the wheel and do their own option
        parsing. <br><br>Most other modules that reinvent option parsing
        either don't bother to do short option bundling (-abc instead of -a
        -b -c), or abbreviation (--long-o instead --long-option-name), or
        the choice to (dis)allow mix-mashing options and arguments, or
        support '--' to end option processing, or respect ordering, or
        support multiple options (--verbose --verbose), or support
        '--foo=val' *as well as* '--foo val', and so on. These are features
        and conveniences that are taken for granted by people working daily
        in Unix command-line. <br>

    Text::Table::Tiny
        Author: NEILB <https://metacpan.org/author/NEILB>

        Very fast, several times faster than Text::TabularDisplay or
        Text::Table (and many times faster than the other slower
        table-generator modules). It uses sprintf() to format a whole row
        instead of formatting each cell separately using sprintf() and
        joining cells together with join(). <br><br>I did a comparison in:
        <a

README  view on Meta::CPAN

        Author: DAGOLDEN <https://metacpan.org/author/DAGOLDEN>

        Overall looks ok, with the exception that it does not look and feel
        like a regular Perl hash at all. Now someone just needs to create a
        tie interface on top of this :) <br>

    App::whatthecommit
        Author: MUDLER <https://metacpan.org/author/MUDLER>

        From the description: &quot;App::whatthecommit is just another
        lazy-to-lazy line command utility.&quot; I'd thought the definition
        of laziness would be something like 'alias gc=git commit
        --allow-empty-message'. This is more like hubris. Or whatever. :)
        <br>

    Opt::Imistic
        Author: ALTREUS <https://metacpan.org/author/ALTREUS>

        Very nifty for short scripts and some clever design inside (all
        options are stored as arrayref, but there is some overloading to
        make getting boolean/flag and normal scalar value convenient).

README  view on Meta::CPAN

        producing trace file, and another for reading this file). And I'm
        probably an idiot, but I can't get this module to work for me.
        <br><br>One alternative if you're looking for a similar module is
        Debug::LTrace. <br><br>

    Devel::TraceSubs
        Author: PARTICLE <https://metacpan.org/author/PARTICLE>

        For an alternative, try Debug::LTrace, which roughly provides the
        same basic feature but is more convenient to use from the
        command-line and give extra information like timing. <br><br>

    Devel::TraceCalls
        Author: COSIMO <https://metacpan.org/author/COSIMO>

        Might be powerful and flexible, but not convenient to use especially
        from command-line. (I was searching for something like &quot;strace
        for Perl function&quot;). <br>

    Debug::LTrace
        Author: KOORCHIK <https://metacpan.org/author/KOORCHIK>

        One of the more convenient and usable subroutine tracing modules on
        CPAN. If you're looking for something like &quot;strace for Perl
        functions&quot;, try this. <br>

    Debug::Trace

README  view on Meta::CPAN


    IPC::System::Simple
        Author: JKEENAN <https://metacpan.org/author/JKEENAN>

        This is a well-designed module with a good interface. The core
        system()'s behavior of whether to invoke shell or not depending on
        the number of arguments is ... unfortunate. This module fixes that.
        <br><br>However, the previous review's comparing of
        IPC::System::Simple with IPC::Run or IPC::Simple is rather
        misguided. They focus on different things: IPC::System::Simple
        focuses on providing shell/no-shell versions of invoking commands
        and making a command's result easier to parse. It does not support
        feeding text to STDIN, handlers for STDOUT/STDERR, timeouts, or the
        other features that IPC::{Run,Cmd} support.

    IPC::Cmd
        Author: BINGOS <https://metacpan.org/author/BINGOS>

        IPC::Cmd does its job, but the interface is inconsistent, probably
        because a different author wrote run_forked() (and didn't follow the
        same convention). run() accepts a hash of arguments, but
        run_forked() accepts a scalar + hashref. run() returns a list, but

README  view on Meta::CPAN

        default export the default exports. <br><br>Basically Xporter is
        just Exporter with a different default (not arguably better or more
        user-friendly). For the sake of minimizing surprise to my users, I
        would avoid the use of Xporter. <br><br>UPDATE 2014-01-24: some
        edits. I appreciate the effort of the author to defend her module,
        though I am not convinced by her arguments.

    Dist::Zilla::Shell
        Author: DOLMEN <https://metacpan.org/author/DOLMEN>

        Nice tool that lets you type dzil commands like 'build', 'test', etc
        while sending all the other unknown commands like 'ls -l', 'man Foo'
        to the underlying shell. Also lets you avoid multiple startup
        overhead of dzil :-)

    CPANPLUS::Shell::Curses
        Author: MARCUS <https://metacpan.org/author/MARCUS>

        Unmaintained. Installs but no longer runs.

        Rating: 2/10

README  view on Meta::CPAN


        Rating: 2/10

    App::Options
        Author: SPADKINS <https://metacpan.org/author/SPADKINS>

        2010-10-13: <br><br>I admit, this is not the most flexible
        configuration framework out there as it enforces some convention.
        And I don't/can't use it on every project. But it's certainly one of
        the easiest. You can slap a few lines of options declaration in your
        code and voila, your script suddenly can accept command line
        arguments, has --help message et al, read from config files (in
        several preset locations). <br><br>There are still a few annoyances
        (I submitted them in the RT), but in general, this is a very handy
        module to use for lazy coders who just want to accept
        configuration/options from outside the code. <br><br>&lt;shameless
        plug&gt;I'm trying to do somewhat the same with Config::Tree, but as
        of now the module is not really done yet.&lt;/shameless plug&gt;
        <br><br>UPDATE 2013-08-15: <br><br>I'm reducing the ratings from 5
        to 2. I've now avoided using this module due to two lingering issue
        since 2010: 1) App::Options does not accept '--opt val', only
        '--opt=val' which is incompatible with how most command-line
        programs work, causing confusion for some of my users. 2) 'perl -c'
        doesn't work under this module, it will still trigger command-line
        processing. <br><br>I'm now using Perinci::CmdLine as replacement,
        but I cannot recommend it in general, as the two modules are not
        equivalent.

        Rating: 4/10

    Filesys::Notify::Simple
        Author: MIYAGAWA <https://metacpan.org/author/MIYAGAWA>

        It's rather unfortunate that currently the choice for general

README  view on Meta::CPAN

        add builtin support for Regexp object already! It's almost 2013,
        Regexp object has been around for, what, more than a decade? I can
        understand not supporting serializing filehandle or coderef, but
        Regexp object?

        Rating: 2/10

    WWW::YouTube::Download
        Author: OALDERS <https://metacpan.org/author/OALDERS>

        Works for me too ATM. I've tried several command-line scripts (most
        of them Python-based, like youtube-dl, tubenick, etc). Sometimes
        they work, sometimes they broke. It's the nature of this kind of
        script. The quality comes from persistence. This module has been
        maintained since 2009, through several YouTube's changes. I commend
        the author, good job, and thanks!

    Number::Zero
        From the module's POD: &quot;The number zero and undef are difficult
        to determine in Perl.&quot; <br><br>Are they? <br><br>say
        !defined($data) ? &quot;undef&quot; : &quot;not undef&quot;;

README  view on Meta::CPAN

        Author: TIMB <https://metacpan.org/author/TIMB>

        Wow, just wow. Hopefully now that we can use this tool to know how
        big things are, we are encouraged to create leaner, faster, more
        efficient Perl modules.

    Oktest
        Author: KWATCH <https://metacpan.org/author/KWATCH>

        A reinvention of Perl testing modules (it even comes with an
        equivalent for 'prove' command), with probably no added features and
        some added quirks. (Nested) topic can already be done using
        Test::More's subtests. Filtering and setup/teardown can be done with
        Test::Class. And I am supposed to replace specific assertion
        functions (with specific, helpful error messages) like is(), isnt(),
        like(), is_deeply(), etc with just OK()? <br>

        Rating: 4/10

    HTML::Escape
        Author: TOKUHIROM <https://metacpan.org/author/TOKUHIROM>

README  view on Meta::CPAN

    Clone::Fast
        Casual benchmarking on my PC shows that Data::Clone is up to twice
        faster than this.

        Rating: 6/10

    Perl::Strip
        Author: MLEHMANN <https://metacpan.org/author/MLEHMANN>

        Balancing previous unhelpful review. Slowish (can't complain,
        PPI-based) but works and comes with a command-line utility.
        <br><br>Beware though that the command-line utility modifies file in
        place without backup, without warning, and without option to create
        backup. <br>

        Rating: 8/10

    Perl::Squish
        Author: ADAMK <https://metacpan.org/author/ADAMK>

        Have failed to build for 1.5 years (reported bug RT#66958 left
        untouched, users need to install Module::Install first). No usage

README  view on Meta::CPAN


    Carp::Always::Color
        Author: DOY <https://metacpan.org/author/DOY>

        Like Carp::Always? Want something better? Here it is. <br>

    CHI Author: ASB <https://metacpan.org/author/ASB>

        The DBI of caching. Stop reinventing your caching framework and just
        use this. <br><br>UPDATE 2013-01-16: unfortunately, the use of Moose
        reduces the usefulness of CHI for command-line scripts (0.2s/146
        files/53k lines startup overhead just to initialize a File cache).
        So 4 stars instead of 5. Let's hope the author migrates to Moo
        someday. <br>

        Rating: 8/10

    Monkey::Patch
        Author: FRODWITH <https://metacpan.org/author/FRODWITH>

        Compared to several other monkey-patching modules (like Sub::Monkey

README  view on Meta::CPAN

        that I'm handling. <br>

    PerlX::Perform
        Author: TOBYINK <https://metacpan.org/author/TOBYINK>

        I personally don't see much value of this syntactic sugar since Perl
        already allows us to express clearly. Pick one: <br><br>for ($foo) {
        say $_ if defined } <br><br>for (grep {defined} $foo) { say $_ }
        <br><br>do { say $_ if defined } for $foo <br><br>say $_ for grep
        {defined} $foo <br><br>And save yourself from having to remember
        whether we should add a comma or not before &quot;wherever&quot;.
        <br>

    TOBYINK::PerlX::A
        I have nothing against bundles like this, but beware that adding
        'use TOBYINK::PerlX::A' will cause Perl to load 460 files and
        compile +- 160k lines (takes 1s on my Core i5 machine and 8s on my
        Atom netbook).

    WWW::Google::Images
        Just adding a note that this module is unmaintained (as expressed by

README  view on Meta::CPAN

    Passwd::Unix
        Author: STRZELEC <https://metacpan.org/author/STRZELEC>

        No tests. No detailed error status, only true/false (yes, there is a
        'warnings' parameter on constructor, but this doesn't give out
        warnings on all operations, only some). No locking (although there
        is backup, but still). <br><br>Also, some weird choices, why use
        bzip2 when creating backup? Or, why still require running as root
        (checking $() if we are allowing custom database file location?
        <br><br>Between this and Unix::ConfigFile, I'm seriously considering
        using Unix commands instead (useradd, userdel, gpasswd, et al).
        <br><br>UPDATE 2011-04-21: I created a fork of Passwd::Unix 0.52
        called Passwd::Unix::Alt instead, which add some tests and
        modifications. Try it out if your needs are also not met by
        Passwd::Unix. <br><br>UPDATE 2012-08-30: I created a new module
        called Unix::Passwd::File. Try it out if your needs are also not met
        by Passwd::Unix.

        Rating: 2/10

    Unix::ConfigFile

README  view on Meta::CPAN

        total size of the downloadable files so I can be pretty sure that
        when I leave my server for days/weeks, I don't run out of disk space
        because I put in too many torrent files. <br>

    Module::CoreList
        Author: BINGOS <https://metacpan.org/author/BINGOS>

        Wow, I was thinking the same exact &quot;godsend&quot; too and turns
        out some other reviewer already said so. Very very helpful to assist
        deployment and pick modules to use. I personally made a couple of
        command-line scripts like pm-in-core or core-since-when to save some
        typing. <br>

    WWW::Mechanize
        Author: SIMBABQUE <https://metacpan.org/author/SIMBABQUE>

        WWW::Mechanize is of course one of the indispensable tools for any
        web programmer or admin. The current problem is the proliferation of
        3rd party subclasses, the functionalities of which cannot be used
        together. So you want a polite Mechanize which does
        self-rate-limiting and uses the Firefox or IE engine? A subclass

README  view on Meta::CPAN

        that you can check Pond syntax using a single regex. But apart from
        that, there's nothing compelling in using Pond to serialize data.

        Rating: 4/10

    File::Which
        Author: PLICEASE <https://metacpan.org/author/PLICEASE>

        You can always count on CPAN to have prewritten modules for various
        things, including this one. I've never bothered before about
        portability and just rely on the &quot;which&quot; command, but for
        one reason there's a time when I just couldn't do that. <br><br>Btw,
        there's also File::Which::Cached.

    String::ShellQuote
        Author: ROSCH <https://metacpan.org/author/ROSCH>

        I admit it. Ever since I know about escapeshellarg() and
        escapeshellcmd() in PHP, I've been reimplementing this function in
        Perl literally a million of times (mostly because of laziness and
        because it only takes a couple of lines in Perl). Only a few months

README  view on Meta::CPAN


    or Acme::CM::Get:

        % perl -MAcme::CM::Get=Import::CPANRatings::User::stevenharyanto -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

    or directly:

        % perl -MAcme::CPANModules::Import::CPANRatings::User::stevenharyanto -E'say $_->{module} for @{ $Acme::CPANModules::Import::CPANRatings::User::stevenharyanto::LIST->{entries} }' | cpanm -n

    This Acme::CPANModules module also helps lcpan produce a more meaningful
    result for "lcpan related-mods" command when it comes to finding related
    modules for the modules listed in this Acme::CPANModules module. See
    App::lcpan::Cmd::related_mods for more details on how "related modules"
    are found.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Acme-CPANModules-Import-CPANRatings-User-s
    tevenharyanto>.

SOURCE

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/App-multiwhich/">0.001</a>)



</h3>



<blockquote class="review_text">
Note that File::Which can also search for all matches too if you use it in a list context, e.g. @paths = which('foo'). File::Which also comes with a pwhich CLI utility which also accepts multiple arguments and has the -a switch to print all matches. ...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-08-16T22:34:39
(<a href="/dist/App-multiwhich#11878">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">

</h3>



<blockquote class="review_text">
Having worked for quite some time with option processing and several other similar modules, I have to say that most of the time you probably want to use Getopt::Long instead of the other alternatives. Or at least pick the alternatives which are based...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-07-26T22:11:10
(<a href="/dist/Getopt-Long#11844">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/App-whatthecommit/">0.01</a>)



</h3>



<blockquote class="review_text">
From the description: &quot;App::whatthecommit is just another lazy-to-lazy line command utility.&quot; I'd thought the definition of laziness would be something like 'alias gc=git commit --allow-empty-message'. This is more like hubris. Or whatever....

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-07-03T04:17:27
(<a href="/dist/App-whatthecommit#11816">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/Devel-TraceSubs/">0.02</a>)



</h3>



<blockquote class="review_text">
For an alternative, try Debug::LTrace, which roughly provides the same basic feature but is more convenient to use from the command-line and give extra information like timing.
<br><br>
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-06-22T02:26:37
(<a href="/dist/Devel-TraceSubs#11808">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/Devel-TraceCalls/">0.04</a>)



</h3>



<blockquote class="review_text">
Might be powerful and flexible, but not convenient to use especially from command-line. (I was searching for something like &quot;strace for Perl function&quot;).
<br>

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-06-22T02:25:06
(<a href="/dist/Devel-TraceCalls#11806">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/IPC-System-Simple/">1.25</a>)



</h3>



<blockquote class="review_text">
This is a well-designed module with a good interface. The core system()'s behavior of whether to invoke shell or not depending on the number of arguments is ... unfortunate. This module fixes that.
<br><br>However, the previous review's comparing of ...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2014-03-18T03:41:17
(<a href="/dist/IPC-System-Simple#11620">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">

</h3>



<blockquote class="review_text">
Nice tool that lets you type dzil commands like 'build', 'test', etc while sending all the other unknown commands like 'ls -l', 'man Foo' to the underlying shell. Also lets you avoid multiple startup overhead of dzil :-)
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2013-11-12T20:03:32
(<a href="/dist/Dist-Zilla-Shell#11406">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-2.0.png" alt="**">

</h3>



<blockquote class="review_text">
2010-10-13:
<br><br>I admit, this is not the most flexible configuration framework out there as it enforces some convention. And I don't/can't use it on every project. But it's certainly one of the easiest. You can slap a few lines of options declara...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2013-08-14T20:58:18
(<a href="/dist/App-Options#7770">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">

</h3>



<blockquote class="review_text">
Works for me too ATM. I've tried several command-line scripts (most of them Python-based, like youtube-dl, tubenick, etc). Sometimes they work, sometimes they broke. It's the nature of this kind of script. The quality comes from persistence. This mod...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2012-11-16T10:32:28
(<a href="/dist/WWW-YouTube-Download#10550">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-2.0.png" alt="**">

</h3>



<blockquote class="review_text">
A reinvention of Perl testing modules (it even comes with an equivalent for 'prove' command), with probably no added features and some added quirks. (Nested) topic can already be done using Test::More's subtests. Filtering and setup/teardown can be d...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2012-10-09T17:30:27
(<a href="/dist/Oktest#10426">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-4.0.png" alt="****">

</h3>



<blockquote class="review_text">
Balancing previous unhelpful review. Slowish (can't complain, PPI-based) but works and comes with a command-line utility.
<br><br>Beware though that the command-line utility modifies file in place without backup, without warning, and without option t...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2012-09-13T17:42:33
(<a href="/dist/Perl-Strip#10376">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-4.0.png" alt="****">

</h3>



<blockquote class="review_text">
The DBI of caching. Stop reinventing your caching framework and just use this.
<br><br>UPDATE 2013-01-16: unfortunately, the use of Moose reduces the usefulness of CHI for command-line scripts (0.2s/146 files/53k lines startup overhead just to initia...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2012-04-24T05:20:53
(<a href="/dist/CHI#9834">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN


   (<a href="https://metacpan.org/release/PerlX-Perform/">0.004</a>)



</h3>



<blockquote class="review_text">
I personally don't see much value of this syntactic sugar since Perl already allows us to express clearly. Pick one:
<br><br>for ($foo) { say $_ if defined }
<br><br>for (grep {defined} $foo) { say $_ }
<br><br>do { say $_ if defined } for $foo
<br><...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2012-03-05T06:16:12
(<a href="/dist/PerlX-Perform#9684">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-1.0.png" alt="*">

</h3>



<blockquote class="review_text">
No tests. No detailed error status, only true/false (yes, there is a 'warnings' parameter on constructor, but this doesn't give out warnings on all operations, only some). No locking (although there is backup, but still).
<br><br>Also, some weird cho...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2011-04-20T06:02:56
(<a href="/dist/Passwd-Unix#8474">permalink</a>)
</p>

<div class="helpfulq">

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">

</h3>



<blockquote class="review_text">
Wow, I was thinking the same exact &quot;godsend&quot; too and turns out some other reviewer already said so. Very very helpful to assist deployment and pick modules to use. I personally made a couple of command-line scripts like pm-in-core or core-s...

</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2010-11-24T09:29:57
(<a href="/dist/Module-CoreList#7886">permalink</a>)
</p>

devdata/stevenharyanto  view on Meta::CPAN




<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">

</h3>



<blockquote class="review_text">
You can always count on CPAN to have prewritten modules for various things, including this one. I've never bothered before about portability and just rely on the &quot;which&quot; command, but for one reason there's a time when I just couldn't do tha...
</blockquote>


<div class="review_footer">
<p class="review_attribution">
<a href="/user/stevenharyanto">Steven Haryanto</a> - 2010-08-25T11:19:36
(<a href="/dist/File-Which#7640">permalink</a>)
</p>

<div class="helpfulq">

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

package Acme::CPANModules::Import::CPANRatings::User::stevenharyanto;

use strict;

our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-stevenharyanto'; # DIST
our $VERSION = '0.002'; # VERSION

our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\n(REMOVED)\n",module=>"Log::Any",rating=>undef},{description=>"\nProvides a thin/lightweight OO interface for \$?, ...

1;
# ABSTRACT: List of modules mentioned by CPANRatings user stevenharyanto

__END__

=pod

=encoding UTF-8

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


Author: L<PTC|https://metacpan.org/author/PTC>

Instead of just printing some info, why not make it an Acme::PM or Acme::PerlMongers like Acme::CPANAuthors? Various stats can then be produced about the various Perl Mongers.
<br>


=item L<App::multiwhich>

Note that File::Which can also search for all matches too if you use it in a list context, e.g. @paths = which('foo'). File::Which also comes with a pwhich CLI utility which also accepts multiple arguments and has the -a switch to print all matches. ...
<br><br>In fact, the Unix 'which' command (or at least its Debian variant) also sports the -a switch.


=item L<Object::Anon>

Author: L<ROBN|https://metacpan.org/author/ROBN>

Nice idea. Some notes: 1) to be widely used, it really needs to be very efficient; 2) if the goal is simply to objectify a hash, perhaps Hash::Objectify or Object::From::Hash or Hash::To::Object (or Data::Objectify and so on) is a more descriptive na...
<br>


lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

<br>
'
<br><br>


=item L<Getopt::Long>

Author: L<JV|https://metacpan.org/author/JV>

Having worked for quite some time with option processing and several other similar modules, I have to say that most of the time you probably want to use Getopt::Long instead of the other alternatives. Or at least pick the alternatives which are based...
<br><br>Most other modules that reinvent option parsing either don't bother to do short option bundling (-abc instead of -a -b -c), or abbreviation (--long-o instead --long-option-name), or the choice to (dis)allow mix-mashing options and arguments, ...
<br>


=item L<Text::Table::Tiny>

Author: L<NEILB|https://metacpan.org/author/NEILB>

Very fast, several times faster than Text::TabularDisplay or Text::Table (and many times faster than the other slower table-generator modules). It uses sprintf() to format a whole row instead of formatting each cell separately using sprintf() and joi...
<br><br>I did a comparison in: <a href="http://blogs.perl.org/users/steven_haryanto/2014/07/benchmarking-several-ascii-table-generator-modules.html" rel="nofollow">blogs.perl.org/users/steven_haryanto/...</a>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

Author: L<DAGOLDEN|https://metacpan.org/author/DAGOLDEN>

Overall looks ok, with the exception that it does not look and feel like a regular Perl hash at all. Now someone just needs to create a tie interface on top of this :)
<br>


=item L<App::whatthecommit>

Author: L<MUDLER|https://metacpan.org/author/MUDLER>

From the description: &quot;App::whatthecommit is just another lazy-to-lazy line command utility.&quot; I'd thought the definition of laziness would be something like 'alias gc=git commit --allow-empty-message'. This is more like hubris. Or whatever....
<br>


=item L<Opt::Imistic>

Author: L<ALTREUS|https://metacpan.org/author/ALTREUS>

Very nifty for short scripts and some clever design inside (all options are stored as arrayref, but there is some overloading to make getting boolean/flag and normal scalar value convenient).
<br><br>For more &quot;proper&quot; scripts though (anything above say 20-30 lines) I'd recommend using something like Getopt::Long with a real spec. Some of the features I like in G::L not in Opt::Imistic: the ability to get --noOPT for free for fla...

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


The doc looks promising, it really looks like it could be the &quot;strace for Perl functions&quot;, but the usage is awkward (you have to open two terminals, one for running your program and producing trace file, and another for reading this file). ...
<br><br>One alternative if you're looking for a similar module is Debug::LTrace.
<br><br>


=item L<Devel::TraceSubs>

Author: L<PARTICLE|https://metacpan.org/author/PARTICLE>

For an alternative, try Debug::LTrace, which roughly provides the same basic feature but is more convenient to use from the command-line and give extra information like timing.
<br><br>


=item L<Devel::TraceCalls>

Author: L<COSIMO|https://metacpan.org/author/COSIMO>

Might be powerful and flexible, but not convenient to use especially from command-line. (I was searching for something like &quot;strace for Perl function&quot;).
<br>


=item L<Debug::LTrace>

Author: L<KOORCHIK|https://metacpan.org/author/KOORCHIK>

One of the more convenient and usable subroutine tracing modules on CPAN. If you're looking for something like &quot;strace for Perl functions&quot;, try this.
<br>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


Thanks for providing a pure-Perl alternative for deep cloning. Otherwise we are stuck with core module Storable's dclone, which cannot handle Regexp objects out of the box, must use deparse to handle coderefs, and not to mention is not as fast as it ...
<br><br>Of course, there are faster XS-based cloning modules on CPAN (all currently non-core, believe it or not there are no core modules for cloning except Storable). I'd recommend Data::Clone. But it's nice to have a pure-Perl implementation, e.g. ...


=item L<IPC::System::Simple>

Author: L<JKEENAN|https://metacpan.org/author/JKEENAN>

This is a well-designed module with a good interface. The core system()'s behavior of whether to invoke shell or not depending on the number of arguments is ... unfortunate. This module fixes that.
<br><br>However, the previous review's comparing of IPC::System::Simple with IPC::Run or IPC::Simple is rather misguided. They focus on different things: IPC::System::Simple focuses on providing shell/no-shell versions of invoking commands and making...


=item L<IPC::Cmd>

Author: L<BINGOS|https://metacpan.org/author/BINGOS>

IPC::Cmd does its job, but the interface is inconsistent, probably because a different author wrote run_forked() (and didn't follow the same convention). run() accepts a hash of arguments, but run_forked() accepts a scalar + hashref. run() returns a ...


=item L<Umask::Local>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

<br><br>use SomeModule qw(a b c);
<br><br>normally they will expect only a, b, and c are exported. If SomeModule uses Xporter, it will also by default export the default exports.
<br><br>Basically Xporter is just Exporter with a different default (not arguably better or more user-friendly). For the sake of minimizing surprise to my users, I would avoid the use of Xporter.
<br><br>UPDATE 2014-01-24: some edits. I appreciate the effort of the author to defend her module, though I am not convinced by her arguments.


=item L<Dist::Zilla::Shell>

Author: L<DOLMEN|https://metacpan.org/author/DOLMEN>

Nice tool that lets you type dzil commands like 'build', 'test', etc while sending all the other unknown commands like 'ls -l', 'man Foo' to the underlying shell. Also lets you avoid multiple startup overhead of dzil :-)


=item L<CPANPLUS::Shell::Curses>

Author: L<MARCUS|https://metacpan.org/author/MARCUS>

Unmaintained. Installs but no longer runs.


Rating: 2/10

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

It's faster than Unicode::GCString-&gt;new($str)-&gt;columns, but it gives wrong answers to lots of characters, e.g. control characters like &quot;\n&quot;, &quot;\t&quot;, etc are currently assumed to have width of -1 character. You're better off wi...


Rating: 2/10

=item L<App::Options>

Author: L<SPADKINS|https://metacpan.org/author/SPADKINS>

2010-10-13:
<br><br>I admit, this is not the most flexible configuration framework out there as it enforces some convention. And I don't/can't use it on every project. But it's certainly one of the easiest. You can slap a few lines of options declaration in your...
<br><br>There are still a few annoyances (I submitted them in the RT), but in general, this is a very handy module to use for lazy coders who just want to accept configuration/options from outside the code.
<br><br>&lt;shameless plug&gt;I'm trying to do somewhat the same with Config::Tree, but as of now the module is not really done yet.&lt;/shameless plug&gt;
<br><br>UPDATE 2013-08-15:
<br><br>I'm reducing the ratings from 5 to 2. I've now avoided using this module due to two lingering issue since 2010: 1) App::Options does not accept '--opt val', only '--opt=val' which is incompatible with how most command-line programs work, caus...
<br><br>I'm now using Perinci::CmdLine as replacement, but I cannot recommend it in general, as the two modules are not equivalent.


Rating: 4/10

=item L<Filesys::Notify::Simple>

Author: L<MIYAGAWA|https://metacpan.org/author/MIYAGAWA>

It's rather unfortunate that currently the choice for general purpose cross-platform filesystem notification modules on CPAN falls between this module (FNS) or File::ChangeNotify (F::CN). The other CPAN modules are either OS-/framework-specific.

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

Balancing previous glowing reviews. Storable has it faults, for example historically its track record for file format backwards compatibility is poor, making programs fail when loading Storable files after the module is upgraded.
<br><br>Also, more importantly, add builtin support for Regexp object already! It's almost 2013, Regexp object has been around for, what, more than a decade? I can understand not supporting serializing filehandle or coderef, but Regexp object?


Rating: 2/10

=item L<WWW::YouTube::Download>

Author: L<OALDERS|https://metacpan.org/author/OALDERS>

Works for me too ATM. I've tried several command-line scripts (most of them Python-based, like youtube-dl, tubenick, etc). Sometimes they work, sometimes they broke. It's the nature of this kind of script. The quality comes from persistence. This mod...


=item L<Number::Zero>

From the module's POD: &quot;The number zero and undef are difficult to determine in Perl.&quot;
<br><br>Are they?
<br><br>say !defined($data) ? &quot;undef&quot; : &quot;not undef&quot;;
<br><br>say defined($data) &amp;&amp; $data==0 ? &quot;zero&quot; : &quot;not zero&quot;; # yes, warn if non-numeric
<br><br>use Scalar::Util 'looks_like_number';
<br>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


Author: L<TIMB|https://metacpan.org/author/TIMB>

Wow, just wow. Hopefully now that we can use this tool to know how big things are, we are encouraged to create leaner, faster, more efficient Perl modules.


=item L<Oktest>

Author: L<KWATCH|https://metacpan.org/author/KWATCH>

A reinvention of Perl testing modules (it even comes with an equivalent for 'prove' command), with probably no added features and some added quirks. (Nested) topic can already be done using Test::More's subtests. Filtering and setup/teardown can be d...
<br>


Rating: 4/10

=item L<HTML::Escape>

Author: L<TOKUHIROM|https://metacpan.org/author/TOKUHIROM>

Still a bit slower than PHP's htmlspecialchars(), but in the same ballpark. An order of magnitude faster than HTML::Entities. Does not provide unescaping, but it's okay since escaping is the majority of use cases.

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


Casual benchmarking on my PC shows that Data::Clone is up to twice faster than this.


Rating: 6/10

=item L<Perl::Strip>

Author: L<MLEHMANN|https://metacpan.org/author/MLEHMANN>

Balancing previous unhelpful review. Slowish (can't complain, PPI-based) but works and comes with a command-line utility.
<br><br>Beware though that the command-line utility modifies file in place without backup, without warning, and without option to create backup.
<br>


Rating: 8/10

=item L<Perl::Squish>

Author: L<ADAMK|https://metacpan.org/author/ADAMK>

Have failed to build for 1.5 years (reported bug RT#66958 left untouched, users need to install Module::Install first). No usage documentation.

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


Like Carp::Always? Want something better? Here it is.
<br>


=item L<CHI>

Author: L<ASB|https://metacpan.org/author/ASB>

The DBI of caching. Stop reinventing your caching framework and just use this.
<br><br>UPDATE 2013-01-16: unfortunately, the use of Moose reduces the usefulness of CHI for command-line scripts (0.2s/146 files/53k lines startup overhead just to initialize a File cache). So 4 stars instead of 5. Let's hope the author migrates to ...
<br>


Rating: 8/10

=item L<Monkey::Patch>

Author: L<FRODWITH|https://metacpan.org/author/FRODWITH>

Compared to several other monkey-patching modules (like Sub::Monkey or Class::Monkey) I prefer this one because the interface is simplest and the documentation is the most straightforward. Plus it can do stacked patching and unordered restore, which ...

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


=item L<PerlX::Perform>

Author: L<TOBYINK|https://metacpan.org/author/TOBYINK>

I personally don't see much value of this syntactic sugar since Perl already allows us to express clearly. Pick one:
<br><br>for ($foo) { say $_ if defined }
<br><br>for (grep {defined} $foo) { say $_ }
<br><br>do { say $_ if defined } for $foo
<br><br>say $_ for grep {defined} $foo
<br><br>And save yourself from having to remember whether we should add a comma or not before &quot;wherever&quot;.
<br>


=item L<TOBYINK::PerlX::A>

I have nothing against bundles like this, but beware that adding 'use TOBYINK::PerlX::A' will cause Perl to load 460 files and compile +- 160k lines (takes 1s on my Core i5 machine and 8s on my Atom netbook).


=item L<WWW::Google::Images>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN



Rating: 2/10

=item L<Passwd::Unix>

Author: L<STRZELEC|https://metacpan.org/author/STRZELEC>

No tests. No detailed error status, only true/false (yes, there is a 'warnings' parameter on constructor, but this doesn't give out warnings on all operations, only some). No locking (although there is backup, but still).
<br><br>Also, some weird choices, why use bzip2 when creating backup? Or, why still require running as root (checking $() if we are allowing custom database file location?
<br><br>Between this and Unix::ConfigFile, I'm seriously considering using Unix commands instead (useradd, userdel, gpasswd, et al).
<br><br>UPDATE 2011-04-21: I created a fork of Passwd::Unix 0.52 called Passwd::Unix::Alt instead, which add some tests and modifications. Try it out if your needs are also not met by Passwd::Unix.
<br><br>UPDATE 2012-08-30: I created a new module called Unix::Passwd::File. Try it out if your needs are also not met by Passwd::Unix.


Rating: 2/10

=item L<Unix::ConfigFile>

Author: L<SSNODGRA|https://metacpan.org/author/SSNODGRA>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

Author: L<ORCLEV|https://metacpan.org/author/ORCLEV>

I mass download stuffs by putting a bunch of torrent files in a directory on the server and let rtorrent takes care of them. With this module I can quickly whip up a short script to calculate the total size of the downloadable files so I can be prett...
<br>


=item L<Module::CoreList>

Author: L<BINGOS|https://metacpan.org/author/BINGOS>

Wow, I was thinking the same exact &quot;godsend&quot; too and turns out some other reviewer already said so. Very very helpful to assist deployment and pick modules to use. I personally made a couple of command-line scripts like pm-in-core or core-s...
<br>


=item L<WWW::Mechanize>

Author: L<SIMBABQUE|https://metacpan.org/author/SIMBABQUE>

WWW::Mechanize is of course one of the indispensable tools for any web programmer or admin. The current problem is the proliferation of 3rd party subclasses, the functionalities of which cannot be used together. So you want a polite Mechanize which d...
<br>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN

<br><br>The documentation does not show what Pond looks like.
<br><br>One cute thing about Pond is that you can check Pond syntax using a single regex. But apart from that, there's nothing compelling in using Pond to serialize data.


Rating: 4/10

=item L<File::Which>

Author: L<PLICEASE|https://metacpan.org/author/PLICEASE>

You can always count on CPAN to have prewritten modules for various things, including this one. I've never bothered before about portability and just rely on the &quot;which&quot; command, but for one reason there's a time when I just couldn't do tha...
<br><br>Btw, there's also File::Which::Cached.


=item L<String::ShellQuote>

Author: L<ROSCH|https://metacpan.org/author/ROSCH>

I admit it. Ever since I know about escapeshellarg() and escapeshellcmd() in PHP, I've been reimplementing this function in Perl  literally a million of times (mostly because of laziness and because it only takes a couple of lines in Perl). Only a fe...
<br><br>The only problem for this module is lack of visibility. Before I've never read articles or blog posts mentioning this module, ever. Yes, we have system() that can bypass the shell, but qx() can't. So yes, this module needs to be marketed more...
<br>

lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm  view on Meta::CPAN


or L<Acme::CM::Get>:

    % perl -MAcme::CM::Get=Import::CPANRatings::User::stevenharyanto -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

or directly:

    % perl -MAcme::CPANModules::Import::CPANRatings::User::stevenharyanto -E'say $_->{module} for @{ $Acme::CPANModules::Import::CPANRatings::User::stevenharyanto::LIST->{entries} }' | cpanm -n

This Acme::CPANModules module also helps L<lcpan> produce a more meaningful
result for C<lcpan related-mods> command when it comes to finding related
modules for the modules listed in this Acme::CPANModules module.
See L<App::lcpan::Cmd::related_mods> for more details on how "related modules"
are found.

=head1 HOMEPAGE

Please visit the project's homepage at L<https://metacpan.org/release/Acme-CPANModules-Import-CPANRatings-User-stevenharyanto>.

=head1 SOURCE

t/00-compile.t  view on Meta::CPAN


use File::Spec;
use IPC::Open3;
use IO::Handle;

open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";

my @warnings;
for my $lib (@module_files)
{
    # see L<perlfaq8/How can I capture STDERR from an external command?>
    my $stderr = IO::Handle->new;

    diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
            $^X, @switches, '-e', "require q[$lib]"))
        if $ENV{PERL_COMPILE_TEST_DEBUG};

    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
    my @_warnings = <$stderr>;
    waitpid($pid, 0);



( run in 0.876 second using v1.01-cache-2.11-cpan-0d23b851a93 )