Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

How to have universal perl script for C and D drive ?

by gasho (Beadle)
on Feb 08, 2008 at 16:47 UTC ( #667014=perlquestion: print w/replies, xml ) Need Help??

gasho has asked for the wisdom of the Perl Monks concerning the following question:

Dear Perl Monks, I would like to convert all my perl scripts so that can run on windows on C or D drive regardless. Please see what I have right now and what I would like to come up with Thanks a lot Gasho
#This is what I have set right now #$LocationOfTheDelSrvDirectory="D:\\PROGRA~1\\RESOUR~1"; #$LocationOfTheScriptsDirectory="D:\cr1_qc\eaqc\main\AutomationInfrast +ructure\SDK"; #This is what I would like to have #1. Determine from what location script is called ( D:\ ... or C:\...) #2. Perl code here for 1.(?) #Assign variable to $Drive='C' or $Drive='D'; #then use $LocationOfTheDelSrvDirectory="$Drive:\\PROGRA~1\\RESOUR~1"; $LocationOfTheScriptsDirectory="$Drive:\cr1_qc\eaqc\main\AutomationInf +rastructure\SDK";
(: Life is short enjoy it :)

Replies are listed 'Best First'.
Re: How to have universal perl script for C and D drive ?
by moritz (Cardinal) on Feb 08, 2008 at 16:54 UTC

    You can do the following to get the current working directory:

    use Cwd; # a core module ;-) my $cwd = getcwd;

    Then you can use paths relative to $cwd, or rewrite the paths depending on whether you're on C:\ or on D:\.

Re: How to have universal perl script for C and D drive ?
by ikegami (Patriarch) on Feb 08, 2008 at 17:49 UTC

    The path to the Program Files directory can be found in the registry at

    The drive in which the script resides can be found using

    use File::Spec::Function qw( rel2abs ); my ($drive) = rel2abs($0) =~ /^([A-Z]):/i;

    Note that this won't work if the script was launched using a UNC path. ($drive will be undef.)

      File::Spec::Win32 also provides a splitpath() function which will split the path into $volume, $directories, $filename

      So you could also grab the volume from there.
Re: How to have universal perl script for C and D drive ?
by weismat (Friar) on Feb 08, 2008 at 20:03 UTC
    I would recommend you to use relative instead of absolute paths. Thus you less dependend on the actual name of the directory and not only the drive.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://667014]
Approved by moritz
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2023-03-24 18:45 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (61 votes). Check out past polls.