Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

(MeowChow) Re: -d fails outside the current working directory

by MeowChow (Vicar)
on Jun 05, 2002 at 09:30 UTC ( #171772=note: print w/ replies, xml ) Need Help??


in reply to -d fails outside the current working directory

As you see, readdir returns the unqualified names of the directory entries, but -d operates on them within the context of the current working directory, which is a recipe for failure. You should either change your cwd (not really recommended), or prepend the filenames with the relative/absolute path, as in:

print "\nOnly directories:\n", grep { -d "$ARGV[0]/$_" } readdir(DIR);
   MeowChow                                   
               s aamecha.s a..a\u$&owag.print


Comment on (MeowChow) Re: -d fails outside the current working directory
Download Code
Re: (MeowChow) Re: -d fails outside the current working directory
by Anonymous Monk on Jun 05, 2002 at 10:53 UTC

    Thankyou!

    Excuses:I did read the readdir docs, I am unfortuantely still at the stage where I get lost in the syntax and therefore don't recognise the significance of the sample code;(

    Am I going to get into problems with using paths (abs or rel) when the "user defined path" is actually a relative path derived from the query parameter of an URL and the script will be running in the context of Apache?

      There are serious security issues you need to consider if you allow users to submit their own paths, depending of course on what you're doing with those paths. For the sake of simplicity, I would recommend that you only allow alphanumerics in these path names. You can then properly untaint and scrub your path as follows:
      my $userpath = $CGI->param('userpath'); my $basepath = "C:/wwwroot/whatever"; my $path = join '/', $basepath, $userpath =~ /\w+/g;
      Speaking of untainting, you are using -T, right?
         MeowChow                                   
                     s aamecha.s a..a\u$&owag.print

        No I'm not using -T (yet!).

        Mainly, I suspect, because I have not a clue as to what -T is?

        Currently this is way early in development -- both the script and my knowledge -- but I WILL look into it!

        Thanks for the pointer

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://171772]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2014-08-02 08:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Who would be the most fun to work for?















    Results (55 votes), past polls