Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re^2: File::Random module (bug)

by McA (Priest)
on Apr 02, 2013 at 07:41 UTC ( #1026609=note: print w/replies, xml ) Need Help??

in reply to Re: File::Random module (bug)
in thread File::Random module

Can you show the bug? I'm a bit surprised as the module runs well in a little test case I made on Windows. The only thing which wonders me is, that File::Find's path seperator seems to be '/' in any case. Have a look at while running under Windows:

#!/usr/bin/perl use strict; use warnings; use File::Find; find(\&wanted, 'C:\\Temp\\something'); sub wanted { print "$_\n"; print "$File::Find::name\n"; }

@gautamparimoo: I can adress a drive 'Z:\' here on my installation. Silly question, but are you sure you have a 'E:\'? Show us the whole script and we can probably see where the problem is.


Replies are listed 'Best First'.
Re^3: File::Random module (bug)
by gautamparimoo (Beadle) on Apr 02, 2013 at 08:52 UTC


    What i have shown is the only script i am trying coz i have not integtated it still because the code snippet is not working.Also I have seen than when I input C: drive(which is the drive from which the script is being run) it gives the correct output But the returned filenames are not from the whole C: drive just the subdirectory from where I am running the script. So when i input drive as E: than i get the same error as shown above. It is kind of a strange thing. Did u run it and what did u get?

    One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man. -Elbert Hubbard
Re^3: File::Random module (McA)
by Anonymous Monk on Apr 02, 2013 at 07:58 UTC

    Can you show the bug?

    Yes I can, but I'm not interested, the OP already showed the bug

    Pay attention to the module name McA

      Hi Anonymous Monk,

      you write

      Yes I can, but I'm not interested...
      That'a pity. I couldn't see where File::Random (I'm aware of the module name) does some path mangling without being careful to '/' or '\' so it produces the above error while using File::Find (I'm aware of the module name).

      The OP gave the error message

      OUTPUT:Can't stat E:: No such file or directory at C:/Perl/site/lib/File/ line 121
      looking at line File::Random line 121 shows that this is a call to find from File::Find (IAOTMN) at least in version 0.17 of File::Random.

      To clarify and sum it up for the interested readers:

      • I made a litte test script with File::Random which worked pretty well under Windows even addressing a drive letter, e.g. Z:\
      • Looking at File::Random line 121 (version 0.17) showed that there is a call to File::Find::find. As I've seen that File::Random also uses $File::Find::name I made a little test script to see how File::Find behaves under Windows which I don't know.
      • As I said above and showed with a little test script I was wondering to see the output of the path names produced by File::Find having '/' in it. But anyway both test scripts work even if addressing a path with a drive letter.
      • I concluded without deeper analysis that the way how File::Random was called produces the error or shows the reason for the bug. Therefor I asked the OP for more information.

      Hopefully someone else shares his Monks's wisdom and shows us the seemingly obvious bug in File::Random.


        ... That'a pity ... seemingly obvious bug in File::Random.

        Its not as if I described it, its not as if I said the Bug in File::Random, it does't use File::Spec or another file path module, it rolls its own code, and naturally its linux-centric

         E:/ is a different directory from  E: and  E:: isn't a directory at all

      I saw the module Path::Iterator::Rule. But how am I gonna implement randomness through this module?

      One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man. -Elbert Hubbard

        Fairly easily...

        use PIR; my @files = PIR->new->file->all($some_dir); printf "Random file is: %s\n", $files[rand @files];
        package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name


        I just wanted to spend some more time to help you with this question, but as I tried to install Path::Iterator::Rule (I'm aware of the module name) on Windows (Strawberry Perl) I got errors from tests. You guess it: Concerning path/drive letter seperator.

        Sorry, I can't help you at the moment even being interested.

        UPDATE: David made an update of the package. Look at Re^5: File::Random module (Path::Iterator::Rule).


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1026609]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2018-03-19 03:14 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (232 votes). Check out past polls.