Giter Club home page Giter Club logo

perlpowertools's Introduction

Coverage Status

The PerlPowerTools module

This is the README for the PerlPowerTools Perl module. This distribution provides pure-Perl implementations of popular Unix tools aimed at the less fortunate systems that don't come with them. By default, these install into ~/perlpowertools.

There are some other ways that might get you to the same thing (and are probably better supported):

Documentation

To read about PerlPowerTools, look at the embedded documentation in the module itself. Inside the distribution, you can format it with perldoc:

% perldoc lib/PerlPowerTools.pm

If you have already installed the module, you can specify the module name instead of the file location:

% perldoc PerlPowerTools

You can read the documentation and inspect the meta data at MetaCPAN.

The standard module documentation has example uses in the SYNOPSIS section, but you can also look in the examples/ directory (if it's there), or look at the test files in t/.

Installation

You can install this module with a CPAN client, which will resolve and install the dependencies:

% cpan PerlPowerTools
% cpanm PerlPowerTools

You can also install directly from the distribution directory, which will also install the dependencies:

% cpan .
% cpanm .

You could install just this module manually:

% perl Makefile.PL
% make
% make test
% make install

If you didn't specify INSTALL_BASE, the modules go into your home directory under perlpowertools. You'll need to add this to PATH to be able to use them.

If you want to install them somewhere else, run the Makefile.PL with your installation location:

perl Makefile.PL INSTALL_BASE=/where/you/want/them/to/go

Source location

The meta data, such as the source repository and bug tracker, is in Makefile.PL or the META.* files it creates. You can find that on those CPAN web interfaces, but you can also look at files directly in the source repository:

If you find a problem, file a ticket in the issue tracker:

Getting help

Although I'm happy to hear from module users in private email, that's the best way for me to forget to do something.

Besides the issue trackers, you can find help at Perlmonks or Stackoverflow, both of which have many competent Perlers who can answer your question, almost in real time. They might not know the particulars of this module, but they can help you diagnose your problem.

You might like to read brian's Guide to Solving Any Perl Problem.

You should have received a LICENSE file, but the license is also noted in the module files. About the only thing you can't do is pretend that you wrote code that you didn't.

Good luck!

Enjoy,

brian d foy, [email protected]

perlpowertools's People

Contributors

anti-fun avatar briandfoy avatar chorny avatar cwest avatar danaj avatar eserte avatar jgpuckering avatar jmaslak avatar jwrightecs avatar kal247 avatar klp2 avatar manwar avatar marked avatar mauke avatar mknos avatar mohawk2 avatar nanis avatar openstrike avatar ownoizri avatar pauloscustodio avatar sergeyromanov avatar shlomif avatar skx avatar svatsan avatar timgimyee avatar xenu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

perlpowertools's Issues

Unescaped left brace in regex is illegal here in regex

dc and glob fail the compile test with bleadperl (5.25.x):

    #   Failed test 'bin/dc compiles'
    #   at t/compile.t line 14.
    #                   'Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/(.*\|\?)\|{ <-- HERE (.*)\|}/ at bin/dc line 226.
    # '
    #     doesn't match '(?^:syntax OK)'
    # Looks like you failed 1 test of 1.

#   Failed test 'bin/dc'
#   at t/compile.t line 16.

    #   Failed test 'bin/glob compiles'
    #   at t/compile.t line 14.
    #                   'Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/( \\\\ | \\{ <-- HERE  | \\} | \{\} )/ at bin/glob line 325.
    # '
    #     doesn't match '(?^:syntax OK)'
    # Looks like you failed 1 test of 1.

#   Failed test 'bin/glob'
#   at t/compile.t line 16.
# Looks like you failed 2 tests of 117.
t/compile.t .. 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/117 subtests 

bin/man is practically hopeless

I tried to remove the DB_File prerequisite, but in doing so I noticed that this program in heavily tied to unix utilities not present in PerlPowerTools and depends on various settings unlikely to exist in most modern situations. It certainly doesn't have a hope of working on non-Unix systems where there is no man database.

I've removed bin/man from MANIFEST.

Part of this removal was motivated by

  • Ubuntu does not include the DB_File module (or many other things in the Perl Standard Library)
  • DB_File is for Berkeley DB v1, which is ancient and unavailable
  • The Perl 4 code could use some modernization and refactoring

Add simple test mechanism for interactive commands

There are some commands that take interactive input, such as bc or ed. I'd like to have a test mechanism where we can either provide input line by line and test the result (output), or provide a series of lines and test the final output. This sort of thing already exists and just needs to be here.

Use three-argument open

Many of the open-for-reading file handles didn't use three-argument open:

https://kritika.io/users/briandfoy/repos/7253941177493998/snapshots/1/violations?limit=20&page=1&rule=InputOutput%3A%3AProhibitTwoArgOpen

For example:

open FOO, $filename;

Add the default read mode in the middle:

open FOO, '<', $filename;

If you feel like it, change those to lexical file handles, although that's a much bigger change that you might not want to drag into this issue.

Do as many or as few of the problem files as you like. For Hacktoberfest, it doesn't matter how big or complete the pull request is. :)

Move scripts out of bin/ and script/

As you found out, installing PerlPowerTools with a CPAN client is dangerous.

But, anyway, the user might want to use those scripts by installing them in a CPAN client-managed path, and then selectively add some of them in his $ENV{PATH} using symlinks or shims.

So I propose to move all scripts from bin/ to lib/PerlPowerTools/. We could even add an utility script ppt-install that would allow the user to do the selective installation once the distribution is installed.

Pager

I have helped put together a less-like pager that could be PARed into a single file distribution (save for Term::ReadKey's libraries), and have some more user-oriented documentation developed if there's interest. It's not going to be switch compatible or feature complete though. Likewise a more-ish variant could be produced, without the Term::ReadKey dependency even, though at the expense of slightly different behavior for piped content.

units script produces incorrect results for definitions that include a fractional factor

The units script incorrectly handles fractional multipliers in both entry and in definitions. For example, the documentation (in the DESCRIPTION section) offers this usage example:

    You have: 1|2 inch
    You want: cm
        * 1.27
        / 0.78740157

Those numbers are correct. However, the actual output when you enter this example is:

You have: 1|2 inch
You want: cm
        * 0.635
        / 1.5748

Note that the values are squares of the correct values. Upon investigation I discovered that the lex subroutine is capturing fractions twice, causing the fraction to be multiplied by itself during reduction. This problem also occurs when the definition includes a fraction, not just on entry of a fractional unit. For example, the conversion from year to month (where month is defined in the DATA section as "1|12 year") yields this result:

You have: month
You want: year
        * 0.00694444
        / 144

The problem traces to this bit of code in the lex subroutine:

my $N = '(?:\d+\.\d+|\d+|\.\d+)(?:[eE][-+]?\d+)?';

 my @t = split /(
                  (?: \*.\* | !.! ) # Special 'new unit' symbol
               |  [()*-]                    # Symbol
               |  \s*(?:\/|\bper\b)\s*      # Division
               |  ($N\|$N)                  # Fraction
               |  $N                        # Decimal number
               |  \d+                       # Integer
               |  [A-Za-z_][A-Za-z_.]*      # identifier
               |  \s+                       # White space
               )/ox, $s;

Note that the $N regex includes ?: to disable group capturing. However, this does not carry through to the Fraction alternative within the split pattern. Changing the subpattern to (?:$N|$N) seems to completely resolve the issue.

I will attempt to clone the repo, fix this bug, and then push the fix.

Collect metadata on each program

Collect meta data for all the programs. Store them in a consistent way in the program for now.

See the bin/factor program for a start. See the top =pod section

brian's Guide to Solving Any Perl Problem

"You might like to read brian's Guide to Solving Any Perl Problem." mentioned in the README does not seem to link to a page that contains this important information.

I do tell people, occasionally, now and then, that they should actualize their thought processes as words to load their subconcious with a definition of the problem to be solved in that dream like state achieved diurnally as the mind returns from sleep to wakefulness; in doing so I mention the teddy bear, but I can never find the location of this story and so my audience, no doubt, thinks that it is nothing but a Perl legend.

May I urge therefore that it would be helpful to have the story, and a photo of the bear in question, in its own github repo for easy reference so that its canon may long endure?

isprint is not a valid POSIX macro

Starting with perl 5.24.0 it is not possible to use POSIX::isprint() anymore. I see one usage of this function in bin/sort, and an error can be seen if used like this:

$ echo a | perl5.24.0 -Mblib bin/sort -k 1i
isprint is not a valid POSIX macro at (eval 4) line 5

In earlier perl versions there was only a deprecation warning:

$ echo a | perl5.20.3 -Mblib bin/sort -k 1i
Calling POSIX::isprint() is deprecated at (eval 4) line 4.
a

perldoc POSIX says:

"isprint"
        This function has been removed as of v5.24. It was very similar
        to matching against "qr/ ^ [[:print:]]+ $ /x", which you should
        convert to use instead. See "POSIX Character Classes" in
        perlrecharclass.

patch command: interupted patch process can leave original file empty

For example, apply the patch in #30 twice. The second time, when prompted if -R should be applied, say no. Then say yes when asked if the patch should be skipped. You will be left with an empty SSLeay.pm, the original file still left over from the first patch in SSLeay.pm.orig, and a backup from this canceled patch attempt in SSLeay.pm.Orig.

I'm guessing other cases where the patch is skipped also leave you with an empty file. This only seems to be a problem if a backup is successfully made, so manual recovery is possible.

Make a test directory/test files for every program

Let's make a test directory for every program, such as t/ed/, and instead that directory is all the tests for that program.

  • there's a program to make the test directory and fill it in
  • all programs have a test directory
  • there's a project-wide test to check that each program has a test directory

At a minimum, we can test:

  • the program compiles
  • some simple runs
  • use Test::Warnings
  • pod test

The GitHub actions will run through all the perls to check for warnings (see conversation in #164), and as we build out the tests the Test::Warnings will handle that.

With prove, we can then just give the program directory to run all it's tests without caring about other programs.

prove t/ed

Right now we have compile.t which checks every file in bin, but that takes awhile. It's annoying if you want to check a single program as you work on just that program.

Make consistent Pod documentation

Inside each program under bin/, create consistent Pod documentation, including the name of the program, the list of the contributors, and so on. See bin/factor for an example.

bc: test binary assignment

Test coverage should be augmented to include:

  • operators *= /= %= ^=
  • scale, ibase and obase variables and their effects
  • "define FUNCTION", which doesn't work and so the test should be wrapped in a TODO block
  • the -b option (which used Math::BigFloat)
  • the if statement

script "units" generates error messages even before asking for input

I submitted this recently to RT Bug Tracker (see ticket 148683) not noticing the "Preferred bug tracker" heading. So I'm resubmitting it here.


The units utility contains a table of unit definitions in the DATA section that includes temperature units. Unfortunately the formulae for these units include subtraction, and subtraction is not supported by the units parser. Moreover, some definitions are incomplete (lacking a scaling factor).

Here's what you get when you run the version of units included in PPT 1.034:

Show quoted text

Parse error: Syntax error.  Skipping.
Parse error: Unknown unit `F'.  Skipping.
Parse error: Syntax error.  Skipping.
Parse error: Unknown unit `C'.  Skipping.
Parse error: Unknown unit `degC'.  Skipping.
Parse error: Unknown unit `kelvin'.  Skipping.
Parse error: Unknown unit `degC'.  Skipping.

I took a run at fixing this by trying to extend the parser to include affine conversions, but after several attempts I gave up on that approach.

One obstacle I ran into is that the current logic relies a great deal on using unity ("1") as the identity operand during reductions. That doesn't work with affine transformations like temperature, which need scaling (multiplication and division) as well as translation (addition and subtraction). Fixing it seemed to involve a lot of code rework, including adding at least two more state transitions to a parser that is a struggle to understand with twelve. (Well, for me anyway!) And with no test script in the distribution the risk of regression seemed too high.

Another obstacle is that the output is displayed as a multiplication factor and a division factor -- thus presuming all conversions involve linear scaling. If I ask to convert "cm" to "in" I get * 0.393701 and / 2.54. If I change that to "100 cm", I get * 39.3701 and / 0.0254. But if I'm converting 100 degrees Celsius to Fahrenheit, I want to see a result of 212 F, not scaling factors that only make sense for a specific temperature quantity. Moreover, the default quantity is 1, whereas 0 is more sensible for temperature. And if you enter a zero multiplier (e.g. "0 K") you get a PARSE_ERROR.

To address these and other issues I enhanced the code to allow unit definitions to consist of a pair of from/to functions, for conversion between the unit and its dimensional base unit. These are eval'd, thus allowing future extensions of this sort. I also enhanced the script to allow a non-interactive mode wherein the have and wanted units are passed as command-line arguments, and I added a test() function which returns results as a hash (rather than printing to stdout). This changes made it easier to write a test script, which I also did.

I also made some changes to the DATA section, mainly related to the temperature units. These weren't working anyway so I figured upward compatibility wasn't an issue. One other change I made was to comment out the entry for the "k" unit, which is defined as 1.38047e-16 erg/degC. That looks similar to the Boltzman constant, but if that's what it is supposed to be then it is incorrect. I didn't bother to correct it because I wasn't sure, and in any event it involves a mix of affine and linear dimensions that are not supported by the script -- even with my latest changes. Fortunately, this was the only such case in the DATA section.

I've attached a copy of units with my changes as well as the test script.
units_temperature_support_and_test_script.zip

As this is a fairly significant change, I'm asking (per the Contributing instructions) whether I should contribute these changes to the project.

Is there an installation problem with Windows (especially Curses)

From Mithun Radhakrishnan [email protected]

Hi Brian,

Just out of curiosity to use the Linux commands in win environment, I tried to install PerlPowerTools on my windows box using cpanm. Currently am using Dwimperl and perl version is (v5.14.2).

It failed to install with below warnings. So I installed "App::a2p", "MIME::Parser" manually using cpanm tool. But Curses fails to install. Does this tool work on windows?

Also attached the build.log file.

Configuring PerlPowerTools-1.006
Running Makefile.PL
Warning: prerequisite App::a2p 0 not found.
Warning: prerequisite Curses 0 not found.
Warning: prerequisite MIME::Parser 0 not found.
Warning: prerequisite Make 0 not found.

The getpwuid function is unimplemented at C:/Dwimperl/perl/site/lib/ExtUtils/MakeMaker.pm line 958.

Welcome to Perl Power Tools (http://www.perlpowertools.com).

You didn't specify INSTALL_BASE, so I chose ~/perlpowertools.
You'll need to add this to PATH to be able to use them.

If you want to install them somewhere else, run Makefile.PL again
with your installation location:

perl Makefile.PL INSTALL_BASE=/where/you/want/them/to/go

Most Perl distributions don't do this for you, but I'm doing this
because some of these tools installed in the wrong places can hide
the real tools, which might cause problems. I'm being careful for

you!

Checking if your kit is complete...
Looks good
-> N/A
-> FAIL Configure failed for PerlPowerTools-1.006. See C:\Users\miradhak.cpanm\work\1429613165.13448\build.log for details.
Expiring 4 work directories.

1 distribution installed

Other strange thing that I noticed is even though below lines are in Makefile.PL, cpanm failed to install them automatically.

'PREREQ_PM' => {
'App::a2p' => '0',
'Make' => '0',
'MIME::Parser' => '0',
'Curses' => '0',
'DB_File' => '0',
},

Cheers,
Mithun
Attachments area

Do not install executables by default?

On many systems, if you accidentally install PerlPowerTools many of the tools get broken.

tokuhirom/plenv#78
miyagawa/cpanminus#443 (comment)

While I love the idea of replicating UNIX tools written in pure perl, it sounds a bit too easy to accidentally break the system. Could you consider not install these executables by default without some options such as --install-executables are passed to configure script Makefile.PL?

Can't use 'defined(@array)

Compilation of bin/fortune fails for bleadperl (e.g. 5.23.8):

    #   Failed test 'bin/fortune compiles'
    #   at t/compile.t line 14.
    #                   'Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at bin/fortune line 354.
    # '
    #     doesn't match '(?^:syntax OK)'
    # Looks like you failed 1 test of 1.

Modulinos?

It seems to me all the PPTs should be modulinos?

shebang should pass by env

Is there some reason against using
#!/usr/bin/env perl
instead of
#!/usr/bin/perl
?

Using env seems like a better option to me.

Use lexical loop iterators

There are a bunch of for and foreach loops that don't use lexical loop variables:

https://kritika.io/users/briandfoy/repos/7253941177493998/snapshots/1/violations?limit=20&page=1&rule=Variables%3A%3ARequireLexicalLoopIterators

For example:

foreach $x ( ... )

Instead, that should be:

foreach my $x ( ... )

Many of these program are not yet strict safe, but this is a good step to getting closer to that.

Do as many or as few of the problem files as you like. For Hacktoberfest, it doesn't matter how big or complete the pull request is. :)

'uname' differs from system 'uname'

Executing just 'uname' prints nothing, but the system 'uname' prints "Darwin" or "Linux".
Not really a bug (depends on reference implementation).

Sort doesn't read from stdin; even with -

Seems busted,

$ perl ./PerlPowerTools/bin/sort < abc.txt 
Can't open `-' for reading: No such file or directory at ./PerlPowerTools/bin/sort line 160.
$ perl ./PerlPowerTools/bin/sort - < abc.txt 
Can't open `-' for reading: No such file or directory at ./PerlPowerTools/bin/sort line 160.

My system,

$ uname -a
Linux cfr-ThinkPad-T450s 5.4.0-67-generic #75-Ubuntu SMP Fri Feb 19 18:03:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$perl --version
This is perl 5, version 30, subversion 0 (v5.30.0) built for x86_64-linux-gnu-thread-multi

Looking at line 160, it looks like this maybe used to depend on some magic of calling open with the filename "-". Perhaps this magic changed over time. From my "perldoc -f open" this only works with the 2-arg version and this trivial patch appears to make it work.

--- ./PerlPowerTools/bin/sort	2021-03-17 17:19:30.249044543 -0600
+++ /tmp/sort.pl	2021-03-17 17:41:54.024310350 -0600
@@ -157,7 +157,7 @@
             _debug("Sorting file $filein ...\n") if $opts->{D};
 
             if ($filein eq '-') {
-                open(F, '<', $filein)
+                open(F, $filein)
                     or die "Can't open `$filein' for reading: $!";
             } else {
                 sysopen(F, $filein, O_RDONLY)

Shown working,


$ /tmp/sort.pl < abc.txt 
a
b
c

$ /tmp/sort.pl - < abc.txt 
a
b
c

grep -w mishandles patterns not ending or beginning in a word character

For example, you might want to search some source code for calls to bar() and pass the -w flag so that other functions like lumbar() are not matched.

% grep -w 'bar[(][)]' source.c

(You have to escape the () characters in the regexp of course.) But although this works fine with GNU grep -w, the PPT version of grep doesn't find a match:

% echo 'bar()' | perl ./bin/grep -w 'bar[(][)]'
(no output)

This is because currently -w works by wrapping the regexp in \b anchors. It's related to Perl/perl5#15219

If you use the alternative mentioned in that bug, the line of code in grep becomes

$opt{w} && (@patterns = map {'(?:\b|(?!\w))' . $_ . '(?:\b|(?<!\w))'} @patterns);

But while this is an improvement, whether it's entirely correct is a matter of opinion. I think it does not completely match GNU grep -w. Another incantation is to allow either kind of word break: (?:\b|\b{wb}) before and after.

'cp a.txt b.txt' fails on Windows

On Windows, cp a.txt b.txt fails at line 252 with message "cp: can not access B.TXT ... skipping".

Overall, this script has problems with case sensitivity, for example cp a.txt dir will create dir/A.TXT.

Suggestion : distribute PerlPowerTools as single file/exe

  1. Wouldn't a "new" file name make it possible to install and work without confusion relative to OS utils (so it could be in $PATH)? For example, if the script is called 'ppt' :
  • grep => call OS grep
  • ppt grep => call PPT grep
  1. I think a single .exe could find a public on Windows, as a lightweight and portable collection of Unix tools without dependencies. Only alternatives known to me :
  • UnxUtils (old and unmaintained)
  • BusyBox-w32

Get rid of indirect object notations

Here's a bunch of violations:

https://kritika.io/users/briandfoy/repos/7253941177493998/snapshots/1/violations?rule=Objects::ProhibitIndirectSyntax

It's code that puts the method first (as C++ would):

 $t0 = new Benchmark;

Turn this into the preferred syntax:

$t0 = Benchmark->new;

That's it.

The affected files. Do as many as you like:

  • bin/file
  • bin/robots
  • bin/look
  • bin/ar
  • bin/whois
  • bin/diff
  • bin/time
  • bin/mail
  • bin/pr
  • bin/rev
  • bin/tac

https://kritika.io/users/briandfoy/repos/7253941177493998/snapshots/1/files/bin/file?expand=104#L104

bc: document in pod

The bc utility has documentation that is no more than the name and a description. It needs to be filled in, preferably based on the GNU and POSIX documentation.

Undeclared dependency App::find2perl

If App::find2perl is not installed, then t/find.t fails:

Please install App::find2perl before continuing.

#   Failed test 'Found files with -amin: find /var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM -type f -amin -50'
#   at t/find.t line 46.
#          got: ''
#     expected: '/var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM/a/b/c/20.txt
# /var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM/d/40.txt
# '
Please install App::find2perl before continuing.

#   Failed test 'Found files with -mmin: find /var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM -type f -mmin +50'
#   at t/find.t line 50.
#          got: ''
#     expected: '/var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM/e/f/60.txt
# /var/tmp/cpansmoker-1023/2018111715/ppt-find-JXSnKlRM/g/h/i/80.txt
# '
# Looks like you failed 2 tests of 15.
t/find.t ..... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/15 subtests 

units uses wrong path separator on Windows

units consults $ENV{UNITTAB} for a list of conversion files. Unfortunately, it uses the hard-coded Unix style path separator : when splitting the contents of this variable:

@UNITTABS = split /:/, $ENV{UNITTAB} unless @UNITTABS;

which means the contents of this environment variable might be misinterpreted on Windows.

PerlPowerTools fails tests on Windows 10 or Server

When I try to install PerlPowerTools on Strawberry Perl (v5.20.2), the t\find.t test fails.

I traced it to two issues:

  1. -x file test is invalid (and never returns true) on Windows.
  2. The file slashes don't match when comparing results on Windows.

Here is the excerpt from the build log:

t/find.t ..... # find2perl is at <C:\Strawberry\perl\site\bin\find2perl>

    #   Failed test 'find2perl is executable C:\Strawberry\perl\site\bin\find2perl'
    #   at t/find.t line 107.
    # Looks like you failed 1 test of 3.
t/find.t ..... 1/?
#   Failed test 'check_find2perl'
#   at t/find.t line 35.

    #   Failed test 'find is executable blib\script\find'
    #   at t/find.t line 115.
    # Looks like you failed 1 test of 3.

#   Failed test 'check_find'
#   at t/find.t line 36.
# Files are
#  C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt
#  C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt
#  C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt
#  C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt  a:1597904345  m:1597904345
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt  a:1597903145  m:1597903145
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt  a:1597901945  m:1597901945
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt  a:1597900745  m:1597900745

    #   Failed test 'Found files with `C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f`'
    #   at t/find.t line 72.
    #          got: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/a/b/c/20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/d/40.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/e/f/60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/g/h/i/80.txt
    # '
    #     expected: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt
    # '
    # !!! Command: C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f
    # !!! Got:
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/a/b/c/20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/d/40.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/e/f/60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/g/h/i/80.txt
    # !!! Expected:
    #   $VAR1 = [
    #           [
    #             'C:\\Users\\sdklsh\\AppData\\Local\\Temp\\perlpowertools-find-R6p1wK0i\\a\\b\\c\\20.txt',
    #             'C:\\Users\\sdklsh\\AppData\\Local\\Temp\\perlpowertools-find-R6p1wK0i\\d\\40.txt'
    #           ],
    #           [
    #             'C:\\Users\\sdklsh\\AppData\\Local\\Temp\\perlpowertools-find-R6p1wK0i\\e\\f\\60.txt',
    #             'C:\\Users\\sdklsh\\AppData\\Local\\Temp\\perlpowertools-find-R6p1wK0i\\g\\h\\i\\80.txt'
    #           ]
    #         ];
    # Looks like you failed 1 test of 1.

#   Failed test 'all_files'
#   at t/find.t line 79.
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt  a:1597904345  m:1597904345
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt  a:1597903145  m:1597903145
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt  a:1597901945  m:1597901945
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt  a:1597900745  m:1597900745

    #   Failed test 'Found files with `C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f -amin -50`'
    #   at t/find.t line 156.
    #          got: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/a/b/c/20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/d/40.txt
    # '
    #     expected: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt
    # '
    # !!! Command: C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f -amin -50
    # !!! Got:
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/a/b/c/20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/d/40.txt
    # !!! Expected:
    #   C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt
    # Looks like you failed 1 test of 1.
t/find.t ..... 6/?
#   Failed test 'amin'
#   at t/find.t line 83.
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\a\b\c\20.txt  a:1597904345  m:1597904345
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\d\40.txt  a:1597903145  m:1597903145
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt  a:1597901945  m:1597901945
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt  a:1597900745  m:1597900745

    #   Failed test 'Found files with `C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f -mmin +50`'
    #   at t/find.t line 156.
    #          got: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/e/f/60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/g/h/i/80.txt
    # '
    #     expected: 'C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt
    # '
    # !!! Command: C:\Strawberry\perl\bin\perl.exe blib\script\find C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i -type f -mmin +50
    # !!! Got:
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/e/f/60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i/g/h/i/80.txt
    # !!! Expected:
    #   C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\e\f\60.txt
    # C:\Users\sdklsh\AppData\Local\Temp\perlpowertools-find-R6p1wK0i\g\h\i\80.txt
    # Looks like you failed 1 test of 1.

#   Failed test 'mmin'
#   at t/find.t line 83.
# Looks like you failed 5 tests of 7.
t/find.t ..... Dubious, test returned 5 (wstat 1280, 0x500)
Failed 5/7 subtests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.